iOS-从willEnterForeground的UIViewController执行选择器



我在主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秒后刷新你的表的数据。

相关内容

  • 没有找到相关文章

最新更新