我正在尝试在应用程序再次成为活动应用程序时刷新我的视图数据。我相信正确的模式是让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];
}
答案 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方法中刷新数据?