我在tabbarcontroller应用程序的Tabview中有一个非常合适。现在,根据其他tabview中的某些操作,uitable应该重新加载(刷新)背景中的更新数据。但是,我无法使用reloadData或beginupdates-endUpdates来获取它。
在这种情况下,有人可以帮忙。
提前致谢。
答案 0 :(得分:0)
我建议结合使用NSNotification以及viewWillAppear / viewDidAppear。
当viewWillAppear - 重新加载tableview时(您可以通过查找自上次显示数据以来的数据更改来优化它)
- (void)viewWillAppear:(BOOL)animated
{
// Your other code here...
[self.tableview reloadData];
}
一旦视图出现并且在后台,数据被其他一些对象更改 - 要求该对象发送通知,并在tableview的viewcontroller寄存器中查看viewWillAppear&在viewWillDisappear中取消注册
其他对象应该发送/发布这样的通知(在数据更改后) -
[[NSNotificationCenter defaultCenter] postNotificationName:@"com.yourcompany.appname.XYZdataChangeNotification" object:nil];
viewController中的以下所有代码(包含要更新的表) -
像这样注册 -
- (void)viewWillAppear:(BOOL)animated
{
// Your other code here...
[self.tableview reloadData];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNewDataReceivedNotification:) name:@"com.yourcompany.appname.XYZdataChangeNotification" object:nil];
}
视图控制器中的通知处理程序 -
- (void)handleNewDataReceivedNotification:(NSNotification *)notification
{
// Your other code here...
[self.tableview reloadData];
}
并取消注册 -
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"com.yourcompany.appname.XYZdataChangeNotification" object:nil];
}
以上所有代码都可以改进,但它应该给你一个想法。如果有任何问题/疑虑,请随时询问。