2014-02-20 52 views
0

進入前臺,我只有一個GalleryViewControllerUIViewController
它由故事板加載。
我想打電話的時候,iOS中

我想在AppDelegate.m中調用我的GalleryViewController的方法。
但我不AppDelegate.m有我GalleryViewController參考。

+0

你'GalleryViewController'是你第一個'UIViewController'?的 –

+0

可能重複[如何分辨當控制器已經從後臺重新開始?(http://stackoverflow.com/questions/3535907/how-to-tell-when-controller-has-resumed-from-background) –

回答

2
- (void)applicationWillEnterForeground:(UIApplication *)application 
{ 
    UIViewController *galleryViewController = self.window.rootViewController; 
    [galleryViewController doSomething]; 
} 

編輯:這只是一個如何獲得對GalleryViewController引用的例子,如果它是你的rootViewController。如果您位於NavigationController或TabBarController中,則需要首先獲取對navigationController或tabBarController的引用,然後將其級聯到viewControllers。

如果你有一個複雜的VC結構,它可能是更容易訂閱通知作爲北斗星指出。信用應該歸功於他更快的迴應。

+0

前景,而不是背景 – Marc

+1

當然,一定是失明的。編輯答案。謝謝。 –

+0

你能否給你的答案添加一個簡短的解釋。 –

1

您可以從應用程序委託中的window獲得對根視圖控制器的引用,然後投射或導航所需的控制器(如果它位於導航控制器中)。

你並不需要這種關係/知識添加到應用程序委託儘管作爲控制器本身可以添加爲UIApplicationWillEnterForegroundNotification通知的觀察員。

+0

+1 :'你不需要將這種關係/知識添加到應用程序委託中'。如果應用程序代理不需要知道它,那麼它不應該知道。只需將'UIApplicationWillEnterForegroundNotification'的觀察者添加到您的'GalleryViewController'類中即可。 –

相關問題