删除 viewdisappear 上的子视图出现时再次添加 - 不工作 - ios sdk
Remove subview on viewdisappear add again when appear - not working- ios sdk
我正在使用该应用程序并希望在视图消失时删除table视图并希望添加相同的table视图当视图出现.
目前
从 A ctr(推送)-> B ctr
从 B ctr(push) -> C ctr -- 我从 superview in viewwilldisappear 中删除了 B ctr 中的 tableview -- 工作正常。
From C ctr(pop) -> B ctr -- 在view中会出现 of B ctr I再次添加 table 视图。 Viewwillaprea 被调用但 table 未添加视图 作为子视图。
4 来自 B ctr(pop) -> A ctr
- 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 视图并将其添加到子视图,否则将不会再保留它,并且在您开始使用它之前它会被销毁.
要点:
- 修复任何内存问题(配置文件以找到真正的原因)
- 不要删除 table 视图
您已为 UITableView 设置 weak
属性 属性。从 superview 中删除它的那一刻,它将从内存中删除。
您可以设置strong
属性来防止这种情况发生。但这会破坏为释放内存而删除它的意义。
可以新建一个tableView,在-viewWillAppear
方法中设置。
要了解有关这些属性的更多信息,请查看 documentation。
还有这个 article 很好地解释了各种 属性 属性。
我正在使用该应用程序并希望在视图消失时删除table视图并希望添加相同的table视图当视图出现.
目前
从 A ctr(推送)-> B ctr
从 B ctr(push) -> C ctr -- 我从 superview in viewwilldisappear 中删除了 B ctr 中的 tableview -- 工作正常。
From C ctr(pop) -> B ctr -- 在view中会出现 of B ctr I再次添加 table 视图。 Viewwillaprea 被调用但 table 未添加视图 作为子视图。
4 来自 B ctr(pop) -> A ctr
- 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 视图并将其添加到子视图,否则将不会再保留它,并且在您开始使用它之前它会被销毁.
要点:
- 修复任何内存问题(配置文件以找到真正的原因)
- 不要删除 table 视图
您已为 UITableView 设置 weak
属性 属性。从 superview 中删除它的那一刻,它将从内存中删除。
您可以设置strong
属性来防止这种情况发生。但这会破坏为释放内存而删除它的意义。
可以新建一个tableView,在-viewWillAppear
方法中设置。
要了解有关这些属性的更多信息,请查看 documentation。
还有这个 article 很好地解释了各种 属性 属性。