故事板 UITableViewCell 的 IB Designables:无法呈现和更新 CountdownViewController 的自动布局状态代理崩溃
IB Designables for storyboard UITableViewCell: Failed to render and update auto layout status for CountdownViewController The agent crashed
我好像用错了@IBDesignbale
,为什么?
我想结合使用 IBDesignable
和 prepareForInterfaceBuilder
将一些数据注入我的 MyTableViewCell
以便它可以显示一些虚拟数据(在此示例项目中,只需设置dummyView.backgroundColor = .red
) 在我的故事板中。
我当前的设置:
1,我猜是使用故事板的 tableview 的通常设置。 TableView inside a view 并将 UITableViewCell
拖入 tableview。
2,标记我的MyTableViewCell
@IBDesignable
3、覆盖 MyTableViewCell
内的 prepareForInterfaceBuilder
设置 dummyView
backgroundColor
错误:
Main.storyboard:错误:IB Designables:无法呈现和更新 ViewController 的自动布局状态(BYZ-38-t0r):代理崩溃了
发生这种情况是因为您的 dummyView
是一个 IBOutlet
并且被隐式解包了。 prepareForInterfaceBuilder
将在 dummyView
初始化之前被调用。您可以通过将代码更改为 dummyView?.backgroundColor = .red
来防止崩溃,但是由于 dummyView == nil
,因此不会呈现任何内容。
将 IBDesignable
与 IBOutlet
混合使用没有多大意义。一般来说,IBDesignable
是为了让运行时间布局和绘图在设计时可见。但是 IBOutlets
在设计时必然已经可见。然而,这在 xib 中可能是可取的。有关讨论,请参阅 here and here.
我好像用错了@IBDesignbale
,为什么?
我想结合使用 IBDesignable
和 prepareForInterfaceBuilder
将一些数据注入我的 MyTableViewCell
以便它可以显示一些虚拟数据(在此示例项目中,只需设置dummyView.backgroundColor = .red
) 在我的故事板中。
我当前的设置:
1,我猜是使用故事板的 tableview 的通常设置。 TableView inside a view 并将 UITableViewCell
拖入 tableview。
2,标记我的MyTableViewCell
@IBDesignable
3、覆盖 MyTableViewCell
内的 prepareForInterfaceBuilder
设置 dummyView
backgroundColor
错误:
Main.storyboard:错误:IB Designables:无法呈现和更新 ViewController 的自动布局状态(BYZ-38-t0r):代理崩溃了
发生这种情况是因为您的 dummyView
是一个 IBOutlet
并且被隐式解包了。 prepareForInterfaceBuilder
将在 dummyView
初始化之前被调用。您可以通过将代码更改为 dummyView?.backgroundColor = .red
来防止崩溃,但是由于 dummyView == nil
,因此不会呈现任何内容。
将 IBDesignable
与 IBOutlet
混合使用没有多大意义。一般来说,IBDesignable
是为了让运行时间布局和绘图在设计时可见。但是 IBOutlets
在设计时必然已经可见。然而,这在 xib 中可能是可取的。有关讨论,请参阅 here and here.