-1

我在 tabbarcontroller 应用程序的 Tabview 之一中有一个 uitable。现在,根据其他选项卡视图中的某些操作,uitable 应该重新加载(刷新)以在后台更新数据。但是,我无法使用 reloadData 或 beginupdates-endUpdates 来获取它。

有人可以在这种情况下提供帮助吗?

提前致谢。

4

1 回答 1

0

我建议为此使用 NSNotification 和 viewWillAppear/viewDidAppear 的组合。

当 viewWillAppear - 重新加载表格视图时(您可以通过查找自上次显示数据以来的数据变化来改进它)

- (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];

}

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

于 2013-10-24T15:11:53.993 回答