我有5个视图控制器,它们位于导航控制器层次结构中。当我到达最后一个视图控制器时,有一个按钮可以让我返回到“家庭”视图控制器(名为CardWalletViewController),它是一个表视图控制器。这是我上一个VC(PointsResultsVC)中的方法

- (IBAction)homePressed:(id)sender {
    NSArray *VCs = [self.navigationController viewControllers];
    [self.navigationController popToViewController:[VCs objectAtIndex:0] animated:YES];
}

CardWalletVC的单元格由来自NSUserDefaults中Card的已保存实例的值填充,并且工作正常。

现在,我想要更新CardWalletViewController中的值,这是来自PointsResultsVC的卡片的点数。注意,这些点保存在NSUserDefault中。

在尝试更新CardWalletVC中显示的值的过程中,我将[self.tableView reloadData];放入该类的-viewDidLoad-viewWillAppear和-viewDidAppear内。我尝试在每种方法中一个接一个地放置它,但似乎不起作用。

请咨询。

编辑:问题解决了

这是我的向导Save data from one tab and reloadData in another tab

正如我所发现的,在应用程序的整个运行过程中,某个类的-viewDidLoad只会被调用一次。 -viewWillAppear,每次视图出现时都会调用它。

因此,我只是改变了将NSUserDefaults中保存的值从-viewDidLoad加载到-viewWillAppear的方式。另外,在-viewWillAppear内部,我放置了[self.tableView reloadData]。然后,问题解决了。

最佳答案

很多事情都可能出错,因此您需要提供更多信息以缩小范围。

首先,不会调用viewDidLoad,因此您可以从此处删除它。 viewWillAppear和viewDidAppear都将被调用,因此您只需要这两种方法之一。

接下来,您需要确定实际问题是什么。

1-self.tableView是对表的正确引用吗?您是否正确维护参考?

2-该表实际上是在重新加载但使用旧数据,还是根本不重新加载?您可以记录willDisplayCell方法以查看视图出现时发生的情况。

利用该信息,可以将根本原因缩小为可解决的问题。

关于iphone - 重新加载表格数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10527175/

10-14 00:55