Iphone 重新加载表的数据
我有5个视图控制器,它们位于导航控制器层次结构中。当我到达最后一个视图控制器时,有一个按钮可以让我返回名为CardWalletViewController的主视图控制器,它是一个表视图控制器。这是我在上一个VC PointsResultsVC中使用的方法 CardWalletVC的单元格被NSUserDefaults中保存的卡实例中的值填充,并且工作正常 现在,我想更新我的CardWalletViewController中的值,它是来自PointsResultsVC的卡的点。请注意,此点保存在NSUserDefaults中 在尝试更新CardWalletVC中显示的值的过程中,我放置了[self.tableView reloadData];所述类的inside-viewDidLoad、-ViewWillDisplay和-ViewDidDisplay。我试着把它一个接一个地放在每一种方法中,但它似乎不起作用 请给我一些建议 编辑:问题解决了 这个是我的向导 正如我所发现的,某个类的-viewDidLoad只会被调用一次,整个应用程序的运行时都是这样。而-viewwill将出现,它将在每次视图出现时被调用Iphone 重新加载表的数据,iphone,ios,xcode,uitableview,reload,Iphone,Ios,Xcode,Uitableview,Reload,我有5个视图控制器,它们位于导航控制器层次结构中。当我到达最后一个视图控制器时,有一个按钮可以让我返回名为CardWalletViewController的主视图控制器,它是一个表视图控制器。这是我在上一个VC PointsResultsVC中使用的方法 CardWalletVC的单元格被NSUserDefaults中保存的卡实例中的值填充,并且工作正常 现在,我想更新我的CardWalletViewController中的值,它是来自PointsResultsVC的卡的点。请注意,此点保存在N
因此,我只是将加载保存在NSUserDefaults中的值的方式从-viewDidLoad移动到-viewWillDisplay。此外,在我放置[self.tableView reloadData]时,将显示inside-view。然后,问题就解决了。有很多事情可能会出错,所以您需要提供更多信息来缩小范围 首先,不会调用viewDidLoad,因此您可以从这里删除它。VIEWWILLISPENCE和VIEWDIDDISPENCE都将被调用,因此您只需要这两个方法中的一个 接下来,您需要确定实际问题是什么 1-self.tableView是否是表的正确引用?您是否正确维护了参考资料 2-表实际上是在使用旧数据重新加载,还是根本没有重新加载?您可以记录willDisplayCell方法,以查看视图出现时发生的情况
有了这些信息,根本原因可以缩小到一个可解决的问题。有很多事情可能会出错,因此您需要提供更多信息来缩小范围 首先,不会调用viewDidLoad,因此您可以从这里删除它。VIEWWILLISPENCE和VIEWDIDDISPENCE都将被调用,因此您只需要这两个方法中的一个 接下来,您需要确定实际问题是什么 1-self.tableView是否是表的正确引用?您是否正确维护了参考资料 2-表实际上是在使用旧数据重新加载,还是根本没有重新加载?您可以记录willDisplayCell方法,以查看视图出现时发生的情况
有了这些信息,根本原因可以缩小到一个可解决的问题。您是否尝试过在每个ViewWillDisplay和ViewDidDisplay中放置NSLog??然后,查看是否触发了NSLog,这样您可以确定是该方法未触发,还是您的表重新加载了相同/错误的数据可能会延迟选择器的执行[self.tableView performSelector:@selectormySelector:withObject:NULL afterDelay:2.0];备注:请注意,viewDidLoad可能会被调用多次!,这是很多人犯的一个错误——如果你的应用程序出现内存不足警告,你的视图可能会被iOS卸载,不管你喜欢与否。这将使viewDidLoad在下次应用程序需要显示该窗口时再次调用。除此之外,通常情况下,您将在ViewWillDisplay或ViewDidDisplay中加载数据,而不是在ViewDidLoad中加载数据,除非它是真正静态的,但这仍然是一种不好的做法。您是否尝试过在每个ViewWillDisplay和ViewDidDisplay中放置NSLog??然后,查看是否触发了NSLog,这样您可以确定是该方法未触发,还是您的表重新加载了相同/错误的数据可能会延迟选择器的执行[self.tableView performSelector:@selectormySelector:withObject:NULL afterDelay:2.0];备注:请注意,viewDidLoad可能会被调用多次!,这是很多人犯的一个错误——如果你的应用程序出现内存不足警告,你的视图可能会被iOS卸载,不管你喜欢与否。这将使viewDidLoad在下次应用程序需要显示该窗口时再次调用。除此之外,通常情况下,您将在ViewWillDisplay或ViewDidDisplay中加载数据,而不是在ViewDidLoad中加载数据,除非它是真正静态的,但这仍然是一种不好的做法
- (IBAction)homePressed:(id)sender {
NSArray *VCs = [self.navigationController viewControllers];
[self.navigationController popToViewController:[VCs objectAtIndex:0] animated:YES];
}