1

我正在使用该应用程序,并希望在视图消失删除表视图,并希望在视图出现添加相同的表视图

目前

  1. 从 A ctr(push) -> B ctr

  2. 从 B ctr(push) -> C ctr - 我从 viewwilldisappear 的 superview 中删除了 B ctr 中的 tableview - 工作正常。

  3. 从 C ctr(pop) -> B ctr -- 在 B ctr视图中,我再次添加了表格视图。Viewwillaprea被调用,但tableview 未添加为子视图。

4 从 B ctr(pop) -> A ctr

  1. From A ctr(push) -> B ctr -- 这次在 B ctr tableview 出现。

似乎当我返回 popViewControllerAnimated 时,它没有将表添加为子视图。

我在xib中有表。

我想这样做是为了释放分配的内存。

桌景出口

 @property (nonatomic,weak) IBOutlet UITableView *tView;

删除 viewWillDisappear 中的表格视图

  [self.tView removeFromSuperview];

在 viewWillAppear 中重新添加

  [self.view addSubview:self.tView];

提前致谢

4

2 回答 2

1

你不应该担心这个,除非你有理由——即重复的内存警告。而且,如果您这样做,您应该找出原因 - 它极不可能是表格视图。如果有的话,它可能是您加载以填充表格视图的数据,因此您可以考虑在不显示时删除该数据......

无论如何,您的问题是您销毁并且不重新创建表视图。您的财产:

 @property (nonatomic,weak) IBOutlet UITableView *tView;

weak,因此当您从其父视图中删除视图时,它会被释放,因为没有其他任何东西持有对它的引用。

当您稍后致电时:

 [self.view addSubview:self.tView];

您需要在调用之前重新创建表视图并将其添加到子视图中,self.tView = newTView否则将不会再次保留它,并且在您使用它之前它会被销毁。

关键点:

  1. 修复任何内存问题(配置文件以找到真正的原因)
  2. 不要删除表格视图
于 2015-05-16T10:44:52.893 回答
0

您已经weak为 UITableView 设置了 property 属性。从超级视图中删除它的那一刻,它将从内存中删除。

您可以设置strong属性以防止这种情况发生。但这会破坏为了释放内存而删除它的意义。

您可以创建一个新的 tableView 并在-viewWillAppear方法中设置它。

要了解有关这些属性的更多信息,请查看文档

还有这篇文章很好地解释了各种属性。

于 2015-05-16T10:46:06.967 回答