UITableViewCell的-layoutSubviews的实现需要调用super

Posted

技术标签:

【中文标题】UITableViewCell的-layoutSubviews的实现需要调用super【英文标题】:UITableViewCell's implementation of -layoutSubviews needs to call super 【发布时间】:2014-10-31 04:14:32 【问题描述】:

我在 UITableViewCell 添加一个视图,并使用 mas_makeConstraints (Masonry)

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kMASCellReuseIdentifier forIndexPath:indexPath];

UIView * view =[[UIView alloc]init];

view.backgroundColor=[UIColor redColor];

[cell addSubview:view];

[view mas_makeConstraints:^(MASConstraintMaker *make)
    make.right.equalTo(cell).offset(-20);
    make.centerY.equalTo(cell);
    make.width.height.equalTo(@20);
];

但它不起作用。

错误信息: 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“执行 -layoutSubviews 后仍需要自动布局。 UITableViewCell 的-layoutSubviews 实现需要调用super。'

请帮帮我! @.@

【问题讨论】:

您应该将视图添加到单元格的 contentView (并且也应该对其进行约束)而不是单元格。最好将此代码放在单元格的 init 方法中,而不是 cellForRowAtIndexPath。按照现在的代码编写方式,每次重用单元格时都会添加视图。 是的,你是对的。非常感谢! 【参考方案1】:

更好的是,为什么不通过 IB 制作自定义 UITableViewCell 并添加您需要的视图。

【讨论】:

感谢您的想法!但我不喜欢 IB。如何只使用代码制作自定义 UITableViewCell ?我试试。它在 ios7 中运行良好。但是ios6不行。错误信息:UITableViewCell 的-layoutSubviews 实现需要调用super 将其添加到单元格 contentView 中。这应该可以解决问题。

以上是关于UITableViewCell的-layoutSubviews的实现需要调用super的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 中的 UIDatePicker 更新 UITableViewCell 文本标签

UITableviewcell的性能问题

UITableViewCell 上的动画按钮而不影响其他 UITableViewCell

斯威夫特 - UITableViewCell?不能转换为 UITableViewCell

如何制作一个继承自另一个 UITableViewCell 的 UITableViewCell?

iOS开发UI篇—UITableviewcell的性能问题