我有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/