我在做什么: 我正在实现一个带有2个视图控制器的导航控制器,一个根控制器(在启动时显示)和一个表View Controller。我在表View Controller中创建一个NSMutableArray来存储从地址簿中选择的联系人列表。
问题: 当我从表视图控制器单击回到根视图控制器时,我的NSMutable数组会刷新,因此当我再次单击以显示我的表视图时,不会显示任何内容。防止这种情况发生的最佳方法是什么?我在我的表视图控制器
中实例化了我的NSMutable Arrayif (!personArray)
{
self.personArray = [[NSMutableArray alloc] init];
}
非常感谢任何建议!
由于
振
答案 0 :(得分:1)
您的tableview将在返回时被取消分配,然后在再次前进时重新创建。因此,不可能在tableview中保留它。相反,您应该创建一个在此过程中不会被销毁的新类。您可以将数组存储在应用程序委托中,但最好创建一个专门用于缓存数据的新类。
答案 1 :(得分:1)
实现此目的的一种方法是将person数组作为根视图控制器或应用程序委托的属性,以便在应用程序启动时创建(可能从文件读取)并继续生效直到应用程序终止。
另一种方法是保持原样,但是当用户返回到根视图控制器时,阻止您的表视图控制器被释放。您的根视图控制器代码可能类似于:
-(IBAction)showMeTheTable:(id)sender
{
MyTableViewController *mtvc = [[MyTableViewController alloc] initWithNibName:nil bundle:nil];
[self.navigationController pushViewController:mtvc animated:YES];
[mtvc release];
}
您可以更改它,以便在根视图控制器的生命周期的早期创建表视图控制器并保留,然后始终推送相同的表视图控制器,而不是每次都创建一个新的:
-(IBAction)showMeTheTable:(id)sender
{
[self.navigationController pushViewController:self.tableViewController animated:YES];
}