从其他viewcontroller中刷新uget of viewcontroller

时间:2013-10-24 14:51:04

标签: ios uitableview uitabbarcontroller

我在tabbarcontroller应用程序的Tabview中有一个非常合适。现在,根据其他tabview中的某些操作,uitable应该重新加载(刷新)背景中的更新数据。但是,我无法使用reloadData或beginupdates-endUpdates来获取它。

在这种情况下,有人可以帮忙。

提前致谢。

1 个答案:

答案 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];

}

以上所有代码都可以改进,但它应该给你一个想法。如果有任何问题/疑虑,请随时询问。