当我使用removefromsuperview方法时,如何刷新视图?

时间:2014-02-27 09:44:10

标签: ios objective-c page-refresh

我在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当然也不起作用。

感谢所有人。

4 个答案:

答案 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。