【问题标题】:Correct pattern for refreshing data in UIViewController'sUIViewController 中刷新数据的正确模式
【发布时间】:2011-11-29 06:34:06
【问题描述】:

当应用程序再次变为活动应用程序时,我正在尝试刷新我的视图数据。我相信正确的模式是让应用程序委托告诉它的视图在调用 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];
}

【问题讨论】:

标签: objective-c ios storyboard


【解决方案1】:

是的,这就是诀窍:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 应用从后台返回时不会调用。只有委托的 applicationDidBecomeActive。
    猜你喜欢
    • 1970-01-01
    • 2016-12-26
    • 2015-10-27
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多