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

时间:2011-11-29 06:34:07

标签: objective-c ios storyboard

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

但是,我无法在Delegate中找到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];
}

2 个答案:

答案 0 :(得分:2)

是的,这就是诀窍:

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

答案 1 :(得分:0)

为什么不在相应的视图控制器viewWillAppear方法中刷新数据?