1

我的主 UITableView 类中有一个 -(void) 方法,用于刷新数据。有点复杂,这里就不贴了,不过在viewWillAppear过程中也会调用,所以每次tableView出现的时候,数据都会正常刷新,除了从多任务打开的时候。

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

我已经成功地做到了这一点:

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

这完美地刷新了数据,但产生了许多其他问题,比如在我的 UINavigationController 中搞砸了 popViewController 动画。我猜这首先不是最好的方法。(有人知道如何解决吗?)

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

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

4

1 回答 1

1

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

由于viewWillAppear:必须调用super viewWillAppear:,我认为那里发生了一些特殊的 UIViewController 魔法,这可能不应该在应用程序加载过程中发生。您说您有一个refreshTableviewData方法,那么为什么不调用它 in applicationWillEnterForeground:,或者至少尝试找到您可以在不调用viewWillAppear.

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

于 2012-08-19T23:25:57.390 回答