我正在工作的IPhone应用程序,通过viewDidLoad,使连接和拉数据到一个表。我希望控制器,或至少表,每次显示控制器时重新加载,即使有人只是从一个选项卡切换到另一个或关闭并重新打开这个控制器上的应用程序。有办法做到这一点吗?我似乎找不到任何东西,这也是一件很难搜索的事情。我发现讨论什么时候把代码在viewDidLoad,但不是另一个方法,每运行他们控制器显示。
谢谢,谢丽尔
你想使用
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
//code to reload table viewdata
}
每次视图出现时,都会调用此方法。
只在一个地方注入代码是不可能的。
你可以想到一个变通的方法,比如从代码的必要部分发送自定义的"重载请求"通知:
-
viewDidAppear:
在视图控制器 -
applicationDidBecomeActive:
(如有表) -
tabBarController:didSelectViewController:
(如果与表一起切换到控制器) -
tabBar:didSelectItem:
(同上) - 等。
在你的视图控制器中,只需观察这个通知并在需要时重新加载数据。
不过,更重要的是:真的需要在如此苛刻的要求下重新加载数据吗?在大多数情况下,数据重载发生在
- 视图控制器的
viewDidLoad:
叫做 - 手动启动(例如按钮)
- 自收到上次更新以来已经过了很长时间