为啥我必须删除为 UITableViewCell 添加的子视图,而不是在 UITableViewCell 的子类中?

Posted

技术标签:

【中文标题】为啥我必须删除为 UITableViewCell 添加的子视图,而不是在 UITableViewCell 的子类中?【英文标题】:Why do I have to remove added subviews for UITableViewCell but not in a Subclass of UITableViewCell?为什么我必须删除为 UITableViewCell 添加的子视图,而不是在 UITableViewCell 的子类中? 【发布时间】:2013-01-12 22:00:58 【问题描述】:

所以我在我的 UITableViewCell 中添加标签等,当我添加子视图时,我知道我需要删除它们,否则它们会保持故障...

我可以理解,但是现在当我使用自定义单元类时,我不再需要删除添加的子视图。这是为什么呢?

我只是在自定义单元类的 init 方法中使用自定义框架(不是通过 IB)初始化标签。

【问题讨论】:

【参考方案1】:

我怀疑你留下了一个额外的参考。请注意,[[foo alloc] init] 返回一个带有 +1 的 ref,添加子视图会增加一个 ref。

使用 addsubview 的正常方法是像这样(示例)传递 autoreleased ref。

[cell addSubview:[UILabel label:args]];

或者这个(例子):

[cell addSubview:[[[Foo alloc] init] autorelease]];

【讨论】:

这对我来说不是很清楚......这就是我添加子视图的方式。

以上是关于为啥我必须删除为 UITableViewCell 添加的子视图,而不是在 UITableViewCell 的子类中?的主要内容,如果未能解决你的问题,请参考以下文章

当我使用自动布局和 xib 制作 uitableviewcell 时,为啥要将 translatesAutoresizingMaskIntoConstraints 设置为 YES?

如果我快速点击,为啥 UITableViewCell 选择不绘制?

为啥我的自定义 UITableViewcell 没有显示?

为啥 systemLayoutSizeFittingSize 为 UITableViewCell 返回 (0, 0)?

我无法删除 UITableViewCell 中图像的左边框

为啥手动重用的 UITableViewCell 在重新加载行时会消失?