删除 viewdisappear 上的子视图出现时再次添加 - 不工作 - ios sdk

Remove subview on viewdisappear add again when appear - not working- ios sdk

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

目前

  1. 从 A ctr(推送)-> B ctr

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

  3. From C ctr(pop) -> B ctr -- 在view中会出现 of B ctr I再次添加 table 视图。 Viewwillaprea 被调用但 table 未添加视图 作为子视图。

4 来自 B ctr(pop) -> A ctr

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

似乎当我返回 popViewControllerAnimated 时它没有添加 table 作为子视图。

我在xib中有table

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

table查看出口

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

在 viewWillDisappear

中删除 table 视图
  [self.tView removeFromSuperview];

添加回 viewWillAppear

  [self.view addSubview:self.tView];

提前致谢

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

无论如何,您的问题是您破坏了并且没有重新创建 table 视图。你的 属性:

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

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

稍后调用时:

 [self.view addSubview:self.tView];

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

要点:

  1. 修复任何内存问题(配置文件以找到真正的原因)
  2. 不要删除 table 视图

您已为 UITableView 设置 weak 属性 属性。从 superview 中删除它的那一刻,它将从内存中删除。

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

可以新建一个tableView,在-viewWillAppear方法中设置。

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

还有这个 article 很好地解释了各种 属性 属性。