我来自Obj-C,我在Swift中做一些超级基本的事情!
我有自定义UICollectionViewCell
:
class CustomCell: UICollectionViewCell
{
// Outlets
// ***************************
@IBOutlet weak var button: UIButton!
// Init
// ***************************
required init?(coder aDecoder: NSCoder)
{
super.init(coder:aDecoder)
setup()
}
override init(frame: CGRect)
{
super.init(frame: frame)
setup()
}
func setup()
{
button.backgroundColor = .white
}
}
单元格是从外部.xib文件加载的,因此调用init(coder:)
进行初始化但我的按钮没有准备好。
如果我更改为button?.backgroundColor
该应用并未发生崩溃,但显然没有任何反应。
我可以在setup()
中调用我的layoutSubviews()
功能,但它确实有效,但它绝对不是正确的选择。
如何解决这个大问题?洛尔
修改
可能我必须从setup()
致电awakeFromNib()
,对吧?
我通常不使用外部.xib,我不熟悉它们
答案 0 :(得分:1)
编辑:抱歉看来你在我的回答之前编辑了你的问题,看起来当你从XIB加载它,然后你可以运行awakeFromNib,当你注册一个笔尖时会使用这个方法调用它:
---旧帖子---
在Xcode 6中,你必须提供额外的init(编码器:)初始化器 像RDCell这样的类,它是UICollectionViewCell的子类。 当类得到时,调用此初始化程序而不是init(frame :) 从故事板或xib文件初始化。那不是我们的情况,但是 我们仍然需要提供init(编码器:)。我们可以使用该解决方案 由Xcode提供给我们。在“问题导航器”中单击该错误 说''required'initializer'init(coder :)'必须提供 'UICollectionViewCell'的子类“,