使用导航栏离开视图时,表视图单元格会丢失其数据

时间:2011-05-17 07:24:49

标签: objective-c ios sqlite uitableview uinavigationbar

我有一个包含自定义单元格的表视图。我的表视图单元格通过插入SQLite数据库中的值填充。

数据库值显示在我的表格视图单元格中,但问题是,当我从表格视图导航到上一个视图,然后通过导航栏返回到tableview时,表格视图变为空白。可能是什么问题?

1 个答案:

答案 0 :(得分:1)

编辑根据对此答案的评论提出更可行的解决方案

假设您要将登录视图添加为模态viewController,则需要在每次额外登录后刷新表。在viewWillAppear方法中重新加载tableView:

[tableView reloadData];

或者,如果您的表需要一段时间才能重新加载,您可以向viewController发送通知,以便在您解除它之前从登录视图重新加载tableView。


如果内存变紧,操作系统可以随意卸载当前不可见的视图。一个常见的iOS开发错误是假设viewController的viewDidLoadviewDidUnload方法中的代码仅在首次加载视图并稍后卸载时才会被调用。检查以确保您的viewDidLoad方法没有对数据的可用性做出任何假设,并确保您的viewDidUnload方法不会意外删除新重新调用的viewDidLoad将会生成的数据需要。

同样,请确保viewWillAppear方法中的某些内容不会妨碍您的viewDidUnload方法。

最后,并且同样地理解,如果您的视图因内存原因而被操作系统转储,它有时会调用您的viewDidUnload方法,因为它会清除它,但是有时似乎没有调用它,可能是因为视图使用的内存非常大,以至于未能在其didReceiveMemoryWarning方法中清除内容使得它决定立即完全转储视图,而不是真正允许它清理自己。