刷新UIViewController中的数据的正确模式

问题描述:

我试图在应用程序再次成为活动应用程序时刷新我的视图数据。我相信正确的模式是让app delegate在调用applicationDidBecomeActive时告诉它的视图重新载入它的数据。刷新UIViewController中的数据的正确模式

但是,我无法委派内找到的UIViewController:

- (void)applicationDidBecomeActive:(UIApplication *)application { 
    MyFancyViewController* controller = //how do I get my view controller??? 
    [controller refreshData]; 
} 

另外,我可以算还是被分配视图控制器上,还是有机会会消失吗?如果这有什么不同,我正在使用iOS 5 Storyboard。

更新: 我想我明白了:

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    UIViewController* root = _window.rootViewController; 
    UINavigationController* navController = (UINavigationController*)root; 
    OctainViewController* mycontroller = (OctainViewController*)[[navController viewControllers] objectAtIndex:0]; 
    [mycontroller refresh:nil]; 
} 
+0

您也可以将来自applicationDidBecomeActive()的通知,并在各自的tableviewcontroller处理。 – Nilesh

+0

你会怎么做? – patterson7019

+0

您可以使用NSNotification中心发布通知。注册您的viewcontrollers的通知和从applicationDidBecomeActive()方法发布通知。 http://www.gnu.org/software/gnustep/resources/documentation/Developer/Base/Reference/NSNotification.html – Nilesh

为什么不刷新各自的视图控制器viewWillAppear中方法您的数据?

+1

当应用程序从后台返回时,不会调用它。只有代表的applicationDidBecomeActive。 – patterson7019

呀,这做的伎俩:

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    UIViewController* root = _window.rootViewController; 
    UINavigationController* navController = (UINavigationController*)root; 
    OctainViewController* mycontroller = (OctainViewController*)[[navController viewControllers] objectAtIndex:0]; 
    [mycontroller refresh:nil]; 
}