刷新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];
}
答
为什么不刷新各自的视图控制器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];
}
您也可以将来自applicationDidBecomeActive()的通知,并在各自的tableviewcontroller处理。 – Nilesh
你会怎么做? – patterson7019
您可以使用NSNotification中心发布通知。注册您的viewcontrollers的通知和从applicationDidBecomeActive()方法发布通知。 http://www.gnu.org/software/gnustep/resources/documentation/Developer/Base/Reference/NSNotification.html – Nilesh