我在主UITableView类中有一个-(void)方法,用于刷新数据。它有点复杂,所以我不打算在这里发布它,但它在viewWillAppear期间也被调用,所以每次tableView出现时,数据都会被正确刷新,除非它是从多任务处理中打开的。
我知道它只是应该提供确切的暂停状态,但在我的应用程序类型中,每次打开应用程序时都需要刷新它。
我已经成功地做到了:
- (void)applicationWillEnterForeground:(UIApplication *)application
{
[self.window.rootViewController viewWillAppear:YES];
}
这完美地刷新了数据,但也产生了许多其他问题,比如把UINavigationController中的popViewController动画搞砸了。我猜这不是最好的方法。(有人知道如何解决这个问题吗?)
我想做的是,无论何时启动应用程序,包括在多任务处理时,都只执行refreshTableviewData方法。
不知道从这里去哪里,但我非常感谢任何建议
我会抛出一些想法,这些想法可能适用,也可能不适用,但由于我没有等效的代码来测试这些想法,你必须尝试它们而不是我。:-)
由于viewWillAppear:
必须调用super viewWillAppear:
,我认为那里发生了一些特殊的UIViewController魔术,这可能不应该在应用程序加载过程中发生。你说你有一个refreshTableviewData
方法,为什么不在applicationWillEnterForeground:
中调用它呢?或者至少试着找到在不调用viewWillAppear
的情况下刷新表的最低限度。
其他选择:您也可以为/UIApplicationWillEnterForegroundNotification
注册视图控制器。或者,如果这不起作用,您可以尝试使用applicationDidBecomeActive
(和/或等效的通知)。作为最后的手段,(这是一个临界破解)当你加载应用程序时,你可以在屏幕上显示一条"刷新数据…"的消息,然后使用NSTimer在1/4或1/2秒后刷新你的表的数据。