1

我正在开发一个 iPhone 应用程序,该应用程序通过 viewDidLoad 建立连接并将数据拉入表中。我希望控制器,或者至少是表格,在每次显示控制器时重新加载,即使有人刚刚从一个选项卡切换到另一个选项卡或关闭并重新打开此控制器上的应用程序。有没有办法做到这一点?我似乎找不到任何东西,这也很难搜索。我发现了关于何时将代码放入 viewDidLoad 的讨论,但没有找到另一种在控制器显示时运行的方法。

谢谢,谢丽尔

4

2 回答 2

2

你想用

-(void)viewDidAppear:(BOOL)animated {

    [super viewDidAppear:animated];

    //code to reload table viewdata

}

每次视图出现时,都会调用此方法。我在我的应用程序中经常使用它。

于 2013-01-16T21:34:49.637 回答
1

只在一个地方注入代码是没有办法的。

您可以考虑一种解决方法,例如从所需的代码部分发送自定义“重新加载请求”通知:

  1. viewDidAppear:在您的视图控制器中
  2. applicationDidBecomeActive:(如果有表格)
  3. tabBarController:didSelectViewController:(如果用桌子切换到控制器上)
  4. tabBar:didSelectItem:(同上)
  5. 等等

在您的视图控制器中,只需观察此通知并在需要时重新加载数据。

不过,更重要的是:你真的需要在如此苛刻的要求下重新加载数据吗?在大多数情况下,数据重新加载发生在

  1. 视图控制器viewDidLoad:被称为
  2. 它是手动启动的(例如按钮)
  3. 自上次收到更新以来已经过了很长时间

否则只是矫枉过正。

于 2013-01-16T21:32:29.433 回答