iOS - 从willEnterForeground执行UIViewController的选择器

时间:2012-08-19 22:03:26

标签: objective-c ios uitableview multitasking background-foreground

我的主UITableView类中有一个 - (void)方法,我用它来刷新数据。它有点复杂,所以我不打算在这里发布它,但它也在viewWillAppear期间调用,因此每次tableView出现时,数据都会正确刷新,除非从多任务打开它。

我知道它应该提供准确的暂停状态,但在我的应用类型中,每次打开应用时都需要刷新它。

我成功完成了这个:

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    [self.window.rootViewController viewWillAppear:YES];
}  

完美刷新数据,但会产生许多其他问题,例如在我的UINavigationController中搞砸popViewController动画。我猜这不是最好的方法。 (任何人都知道如何解决这个问题?)

我想要做的是每当我启动应用程序时执行我的refreshTableviewData方法,包括多任务处理时。

不知道从哪里开始,但我会非常感谢任何建议!

1 个答案:

答案 0 :(得分:1)

我会抛出一些想法,可能适用也可能不适用,但由于我没有相应的代码来测试这些,你必须尝试而不是我。 : - )

由于viewWillAppear:必须调用super viewWillAppear:,我认为在那里发生了一些特殊的UIViewController魔法,这可能不应该在应用程序的加载过程中发生。你说你有一个refreshTableviewData方法,所以为什么不在applicationWillEnterForeground:中调用它,或者至少尝试找到你可以做的最低限度来刷新你的表而不调用viewWillAppear

其他替代方案:您还可以让视图控制器注册/UIApplicationWillEnterForegroundNotification。或者,如果这不起作用,您可以尝试使用applicationDidBecomeActive(和/或等效通知)。作为最后的手段,(这是一个临界黑客)当你加载应用程序时,你可以在屏幕上放置一个“刷新数据...”消息,然后使用NSTimer刷新你的表的数据,比如1/4或1/2秒后。