故事板UITableViewCell的IB Designables:无法呈现和更新CountdownViewController的自动布局状态代理程序崩溃

时间:2017-11-27 19:44:35

标签: ios uitableview ibdesignable

似乎我使用@IBDesignbale错误,但为什么?

我想使用IBDesignableprepareForInterfaceBuilder的组合将一些数据注入我的MyTableViewCell,以便它可以显示一些虚拟数据(在此示例项目中,只需设置{{ 1}})在我的故事板中。

我目前的设置:

1,我猜通常使用storyboard设置tableview。在视图中使用TableView并将dummyView.backgroundColor = .red拖到tableview中。

2,标记为UITableViewCell MyTableViewCell

3,在@IBDesignable设置prepareForInterfaceBuilder backgroundColor

中覆盖MyTableViewCell

错误:

Main.storyboard:错误:IB Designables:无法呈现和更新ViewController的自动布局状态(BYZ-38-t0r):代理程序崩溃

enter image description here

1 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为您的dummyViewIBOutlet并且是隐式解包的。在prepareForInterfaceBuilder初始化之前将调用dummyView。您可以通过将代码更改为dummyView?.backgroundColor = .red来防止崩溃,但之后不会呈现任何内容,因为dummyView == nil

IBDesignableIBOutlet混合起来并没有多大意义。通常,IBDesignable旨在使运行时布局和绘图在设计时可见。但IBOutlets在设计时必然已经可见。然而,这可能在xib中是合乎需要的。有关该问题的讨论,请参阅herehere.