我一直试图在用户重新进入iphone应用程序时重新加载表格。表格的所有信息都是正确和正确的。该表正在输入正确的数据源和委托,我打印的值是我想要的,但在视觉上表格不会在视觉上重新加载。我的电话在appWillEnterForeground中,并且调用viewWillLoad。
答案 0 :(得分:7)
您不应该像上面的评论中描述的那样触发viewDidLoad。 viewDidLoad是CocoaTouch框架在适当的时候调用的一种特殊方法。它不应该由您的代码直接调用。
相反,您可以使用通知来完成同样的事情。这是你正在做的事情的正确方法:
- (void)applicationWillEnterForeground:(UIApplication *)application {
// Fire a notification to let all views know that our app entered foreground.
[[NSNotificationCenter defaultCenter] postNotificationName:@"EnteredForeground"
object:nil];
}
处理特定ViewController中的通知:
- (void)viewDidLoad {
...
[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(enteredForeground:)
name:@"EnteredForeground"
object:nil];
}
// Handle the notification in your ViewController:
- (void)enteredForeground:(id)object {
// Reload the tableview
[self.tableView reloadData];
}
答案 1 :(得分:2)
您可以观察UIApplicationWillEnterForegroundNotification而不是发布您自己的通知:
[[NSNotificationCenter defaultCenter] addObserver:self.tableView selector:@selector(reloadData) name:UIApplicationWillEnterForegroundNotification object:nil];