3

我有一个带有用户生成内容的标签栏的应用程序。当每个视图控制器加载时,viewDidLoad方法向服务器发出HTTP请求以获取数据,然后相应地填充其视图。但是,一旦加载了所有数据,视图仍保持不变(除非视图控制器已卸载并重新加载)。在前台应用刷新视图控制器内容

很多其他具有用户生成内容的应用程序都有类似的行为,除非每个视图都会在应用程序进入后台时重新加载,然后再次返回到前台。也就是说,当用户在应用程序处于活动状态时在各个选项卡之间切换时,内容将不会自动刷新。如果用户“退出”应用程序,然后再回来,视图将被重新加载。

是否有标准的做法来设计一个应用程序的行为呢?具体来说,我想知道是否有UIKit的细节,我可以利用它来刷新我对应用程序“重新启动”的看法。

否则,我想一个简单的方法是让每个视图控制器在viewDidLoad中注册通知,并监听进入前台的应用程序。然后控制器可以通过重新加载其数据来响应每个通知。

回答

5

在每个视图控制器中,您想要订阅UIApplicationDidBecomeActiveNotification通知,并实现在接收到该通知时被调用的方法。这种方法将重新加载,但是您的数据需要重新加载超出了我们可以在这里回答的范围。这就是我的做法,以及我如何推荐做到这一点。

+1

对此的优化是确定您是否是可见的VC。如果你不可见,那么简单地设置一个脏标志并刷新,如果你确实变得可见。 viewDidAppear:(BOOL)动画将帮助你实现脏标志。 – logancautrell 2010-09-14 19:56:58

+2

如何确定视图是否可见?我认为这实际上是必要的,因为总是响应UIApplicationDidBecomeActiveNotification将导致不必要的成本重新加载数据的视图可能不会显示。然而,viewDidAppear:实际上并没有达到我们需要的东西,因为它在应用程序变为活动状态时似乎不会触发。它似乎只在应用程序为_already active_时出现视图,而不在视图在应用程序从非活动状态变为活动状态时已可见。 – pmc255 2010-09-14 20:43:23