iOS UITableView在“收到内存警告”消息后松散内容

时间:2012-12-20 08:44:44

标签: ios uitableview cocoa-touch uikit didreceivememorywarning

(最初是我在Apple Developer Network发布的,并且在四天内没有回复,所以我在这里复制/粘贴)

启用ARC。

在我的课堂上,我有一个UITableViewController属性,

@property (nonatomic, strong) UITableViewController* tableViewControllerSectionMenu;

用于保存UIPopoverController的表格视图。

此代码创建UITableViewController并在viewDidLoad:

中设置delagate和数据源
self.tableViewControllerSectionMenu = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
self.tableViewControllerSectionMenu.tableView.dataSource = self.dataSource;
self.tableViewControllerSectionMenu.tableView.delegate = self;

这可以正常工作,直到发生内存警告。

之后表格为空白。

我尝试将reloadData放在调用popover的位置,但不会改变任何内容。

有人知道为什么会这样,以及如何解决这个问题?

通过谷歌搜索,我找到了几个解决方案,没有一个在我的案例中有效。

2 个答案:

答案 0 :(得分:1)

我认为收到内存警告时会清理您的数据。您是否有机会实施didReceiveMemoryWarningviewDidUnload

答案 1 :(得分:0)

收到内存警告消息时,屏幕上当前未显示的所有视图都将被清除。它们应该在以后需要时重新创建。

重新创建它们意味着再次附加委托和数据源。由于在ViewController X中收到内存警告,并且它的视图在屏幕上,我的表视图被清除。

但由于我没有从X移动,因此委托和数据源未再次附加,因为这是在viewDidLoad中完成的。

为了逃避从X回来一步,我为我的表视图创建了一个新类,其中viewDidLoad我附加了委托和数据源。