2012-04-24 78 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

相關問題