Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.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
Iphone 重新加载表的数据_Iphone_Ios_Xcode_Uitableview_Reload - Fatal编程技术网

Iphone 重新加载表的数据

Iphone 重新加载表的数据,iphone,ios,xcode,uitableview,reload,Iphone,Ios,Xcode,Uitableview,Reload,我有5个视图控制器,它们位于导航控制器层次结构中。当我到达最后一个视图控制器时,有一个按钮可以让我返回名为CardWalletViewController的主视图控制器,它是一个表视图控制器。这是我在上一个VC PointsResultsVC中使用的方法 CardWalletVC的单元格被NSUserDefaults中保存的卡实例中的值填充,并且工作正常 现在,我想更新我的CardWalletViewController中的值,它是来自PointsResultsVC的卡的点。请注意,此点保存在N

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

CardWalletVC的单元格被NSUserDefaults中保存的卡实例中的值填充,并且工作正常

现在,我想更新我的CardWalletViewController中的值,它是来自PointsResultsVC的卡的点。请注意,此点保存在NSUserDefaults中

在尝试更新CardWalletVC中显示的值的过程中,我放置了[self.tableView reloadData];所述类的inside-viewDidLoad、-ViewWillDisplay和-ViewDidDisplay。我试着把它一个接一个地放在每一种方法中,但它似乎不起作用

请给我一些建议

编辑:问题解决了

这个是我的向导

正如我所发现的,某个类的-viewDidLoad只会被调用一次,整个应用程序的运行时都是这样。而-viewwill将出现,它将在每次视图出现时被调用


因此,我只是将加载保存在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];
}