【问题标题】:AutoLayout and UITableViewCell prototypes in Interface BuilderInterface Builder 中的 AutoLayout 和 UITableViewCell 原型
【发布时间】:2013-01-29 15:59:16
【问题描述】:

我有一个 UITableViewCell 子类,打开自动布局后,我现在收到此错误:

2013-01-29 15:46:15.555 iP2[6690:907] *** Assertion failure in -[MenuTableViewCell layoutSublayersOfLayer:], /SourceCache/UIKit/UIKit-2372/UIView.m:5776
2013-01-29 15:46:30.357 iP2[6690:907] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Auto Layout still required after executing -layoutSubviews. MenuTableViewCell's implementation of -layoutSubviews needs to call super.'

MenuTableViewCell 是我的子类。

我猜这与 IB 如何决定自动构建此单元格的约束有关。这是我为此单元设置 IB 的屏幕截图:https://www.evernote.com/shard/s4/sh/0ec12042-7d37-4770-8d7a-c0c8c1e4e6f0/3192e32e8fde55dfe94c7269c428f73b

【问题讨论】:

  • 你在子类中覆盖 layoutSubviews 吗?
  • 没有。所以我假设 UITableViewCell 是,这可能不是调用 super.
  • 当你调用 addSubview 调用 layoutSubviews [tableCell addSubview:viewFromXib]; [tableCell layoutSubviews];

标签: objective-c uitableview interface-builder autolayout


【解决方案1】:

关闭自动布局为我解决了这个问题,似乎UITableViewCell 不支持自动布局,因此您可以将其子类化并在您的设计中使用自动布局...

【讨论】:

  • 你有什么证据表明 UITableViewCell 不支持自动布局?
  • 据我记忆,我将 UITableViewCell 子类化,即使我没有覆盖 layoutSubviews,也会导致 OP 崩溃。
【解决方案2】:

可能是你必须实现 layoutSubviews 方法吗?而且您似乎也将此消息发送给了超级。例如:

  • (void)layoutSubviews { [超级布局子视图]; ETC... }

【讨论】:

  • 我包括了 -(void)layoutSubviews { [super layoutSubviews];以防万一是这样的疯狂;但它仍然会引发错误。我有一种感觉,UITableViewCell 可能不会在 IT 的 layoutSubViews 方法中调用 super。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-23
  • 2016-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-18
  • 2013-11-28
相关资源
最近更新 更多