2012-04-24 74 views
0

我有GridViewController。将MyAppDelegate.m中的方法调用到ViewController

@interface GridViewController : UIViewController <AQGridViewDelegate, AQGridViewDataSource, LoginViewControllerDelegate, IconDownloaderDelegate, UIScrollViewDelegate> { 

NSArray *objects; //main data model 
NSMutableDictionary *imageDownloadsInProgress; 

} 

@property (nonatomic, retain) IBOutlet AQGridView *gridView; 

我需要调用reloadData方法到我的gridview。

当我打电话的GridViewController.m(viewDidLoad中)[self.gridView reloadData];

它没有问题重新加载。

但我需要调用此方法AppDelegate.m

所以我输入 “GridViewController.h” 在AppDelegate.m

#import "AppDelegate.h" 
#import "GridViewController.h" 

并调用该方法,

[gridViewController.gridView reloadData]; 

它不工作。

如何从我的delegate.m中将此方法调用到GridViewController的gridView?

+0

你有没有尝试过调试,是否控制去数据源和表视图的委托方法? – rishi 2012-04-24 06:16:16

+0

你有没有参考你的应用程序委托中的Current GridView控制器。我的意思是'gridViewController'实际上是存在于屏幕上的控制器? – 2012-04-24 06:21:20

+0

感觉像我需要另一个'问一个问题'关于如何调试,或者只是退出。哈哈!谢谢。 – 2012-04-24 06:26:32

回答

2

尝试在您的AppDelegate中发布一条通知,说明您的GridViewController会捕获该通知。 在AppDelegate.m在一个地方,在那里,你需要打电话给电网重载代码:

[[NSNotificationCenter defaultCenter] postNotificationName:@"reloadGrid" object:nil]; 

在你GridViewController的viewDidLoad:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadMyGrid)name:@"reloadGrid" object:nil]; 

在你GridViewController的viewDidUnload:

[[NSNotificationCenter defaultCenter] removeObserver:self]; 

而且您需要将方法添加到GridViewController中:

- (void)reloadMyGrid { 
    [self.gridView reloadData]; 
} 
+0

完美无瑕,谢谢。 – 2012-04-24 06:41:29

+0

当您需要从B类的Class A中调用某些代码时,通常会这样做: – 2012-04-24 06:48:01

相关问题