我在iOS应用程序上有两个视图控制器。
第一个视图控制器(A),存储带有数据单元格的表视图。 当我选择一个单元格时,我使用follow方法转到第二个视图控制器(B):
if (secondViewController == nil) {
secondViewController = [[SecondViewController alloc] initWithNibName: @"nibName" bundle:nil];
}
[self.view addSubview:secondViewController.view];
当我在第二个视图控制器(B)中并且我想回到第一个视图控制器(A)时,我使用的方法:
[self.view removeFromSuperview];
然后我回到第一个视图控制器(A)。
问题是:
当我在第一个视图控制器(A)中选择不同的单元格时,我转到第二个视图控制器(B),但这次使用的是前一个单元格的相同数据。 视图控制器不会自动刷新数据......
我尝试使用viewWillAppear,但它没有用,所以我需要一些帮助。另一方面,viewDidAppear当然也不起作用。
感谢所有人。
答案 0 :(得分:2)
之所以这样,是因为你刚刚第一次创建了secondViewController(延迟加载),之后只需添加子视图:
if (secondViewController == nil) {
secondViewController = [[SecondViewController alloc] initWithNibName: @"nibName" bundle:nil];
}
您可以通过执行以下操作进行排序:
secondViewController = [[SecondViewController alloc] initWithNibName: @"nibName" bundle:nil];
[self.view addSubview:secondViewController.view];
但是你在哪里将数据加载到子视图中。如果您想根据数据更改视图,您应该执行以下操作:
if (secondViewController == nil) {
secondViewController = [[SecondViewController alloc] initWithNibName: @"nibName" bundle:nil];
}
//Pass some data here
secondViewController.SOMEDATA = YOURDATA;
[self.view addSubview:secondViewController.view];
答案 1 :(得分:0)
[viewThatYouWantToRefresh setNeedsDisplay];
或者如果您需要更新UITableView上的单元格中的数据:
[tableView reloadData];
答案 2 :(得分:0)
我确信我理解正确,但我认为你可以改变
if (secondViewController == nil) {
secondViewController = [[SecondViewController alloc] initWithNibName: @"nibName" bundle:nil];
}
到
secondViewController = [[SecondViewController alloc] initWithNibName: @"nibName" bundle:nil];
因此,每次选择新单元格时都会重新创建SecondViewController。
答案 3 :(得分:0)
删除此条件:
if (secondViewController == nil)
即无需检查secondViewController是否为nil。问题是你只创建了一次secondViewController。