Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从其他viewcontroller刷新viewcontroller的uitable_Ios_Uitableview_Uitabbarcontroller - Fatal编程技术网

Ios 从其他viewcontroller刷新viewcontroller的uitable

Ios 从其他viewcontroller刷新viewcontroller的uitable,ios,uitableview,uitabbarcontroller,Ios,Uitableview,Uitabbarcontroller,我在tabbarcontroller应用程序的一个选项卡视图中有一个uitable。现在,根据其他选项卡视图中的某些操作,uitable应该在后台重新加载(刷新)更新的数据。但是,我无法使用reloadData或BeginUpdate-EndUpdate获得它 在这种情况下,有人能帮忙吗 提前感谢。我建议将NSNotification与ViewWillDisplay/ViewDidDisplay结合使用 当视图将出现时-重新加载tableview(您可以通过查找自上次显示数据以来的数据更改来优化

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

在这种情况下,有人能帮忙吗


提前感谢。

我建议将NSNotification与ViewWillDisplay/ViewDidDisplay结合使用

当视图将出现时-重新加载tableview(您可以通过查找自上次显示数据以来的数据更改来优化它)

一旦视图出现,并且在后台数据被其他对象更改-要求该对象发送通知,并且在tableview的viewcontroller中,该通知在ViewWillose中的注册将出现,在ViewWillose中取消注册将消失

另一个对象应该像这样发送/发布通知(就在数据更改之后)-

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)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];

    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"com.yourcompany.appname.XYZdataChangeNotification" object:nil];

}
视图控制器中的通知处理程序-

- (void)handleNewDataReceivedNotification:(NSNotification *)notification
{
        // Your other code here...
        [self.tableview reloadData];
}
然后像这样取消注册-

- (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)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];

    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"com.yourcompany.appname.XYZdataChangeNotification" object:nil];

}

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

因为您是本论坛的新成员,所以有一条建议-在您发布问题后,您应该回访,接受或投票赞成或反对。反馈很重要。