objective-c - 使用导航栏离开 View 时 TableView 单元格会丢失数据

标签 objective-c ios sqlite uitableview uinavigationbar

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

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

最佳答案

已编辑,根据对此答案的评论建议更可能的解决方案

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

[tableView reloadData];

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


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

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

最后,同样,请了解,如果您的 View 因内存原因被操作系统转储,它有时会在清除 View 时调用您的 viewDidUnload 方法out,但有时似乎没有调用它,也许是因为 View 使用的内存太大,以至于未能在其 didReceiveMemoryWarning 方法中清除内容,导致它决定立即完全转储 View ,而不真正允许它自行清理。

关于objective-c - 使用导航栏离开 View 时 TableView 单元格会丢失数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6027571/

相关文章:

objective-c - 为什么不调用 -layoutSubviews?

sqlite - 导入 SQlite3 转储后激活外键

sqlite - 确保产品和标签属于同一帐户的数据库级约束?

objective-c - 在与主类分开的 .m 文件中实现 objc 协议(protocol)方法?

ios - Objective-C:有选择地组合两个数组

ios - 使用 swiftlyJSON 在 Swift 中解析具有未知根元素的 JSON

android - 在 sqlite 中搜索,基于 String 获取描述

javascript - Electron 登录助手无法工作 - "Process is not in an inherited sandbox"

iphone - 在iPhone上使用地址解析检查地址的有效性

iphone - 有没有办法知道 iOS 设备何时锁定/解锁?