viewWillAppear vs Viewdidload ios

时间:2012-01-10 11:13:15

标签: ios uitableview uinavigationcontroller

使用iOS导航应用程序的代码时,我遇到了麻烦:

在哪里可以为UITableView设置方法“initdata”?在viewWillAppear或viewDidLoad?

请帮帮我。

2 个答案:

答案 0 :(得分:14)

您可以根据应用程序的要求放置initData,

如果您的表每次都需要使用新数据加载数据,那么它应该在

之下
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    //initData
}

否则,如果表需要通过单个数据重新加载,该数据没有变化或者没有对Data执行任何编辑操作,则应使用

- (void)viewDidLoad {
    [super viewDidLoad];
   //initData
}

答案 1 :(得分:2)

最好在initWithNibName:bundle:initWithCoder:方法中调用它,然后在-(void)dealloc中释放加载的数据。

此外,您可以在viewDidLoad中拥有该内容,并在viewDidUnload中发布已加载的数据。但最好避免从viewWillAppear:

中调用它

修改

我希望该数组取决于父视图中的选择。在这种情况下,编写一个setter方法,该方法在推送视图控制器之前设置条件并初始化数据。

DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
// Pass the selected object to the new view controller and depend on that, load the data.
[detailViewController initData:(id)[_list objectAtIndex:indexPath.row]];
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];