在"contentLabel.text = content“行发现nil时出错
打开/关闭commonInit
class SuccessfulView: UIView{
@IBOutlet weak var contentLabel: UILabel!
convenience init(content:String ,frame: CGRect){
self.init(frame:frame)
contentLabel.text = content
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override init(frame: CGRect) {
super.init(frame: frame) // calls designated initializer
}
func commonInit(){
Bundle.main.loadNibNamed("SuccessfulFooterContentView", owner: self, options: nil)
addSubview(contentLabel)
}
}
创建具有xib的UIView的子类
发布于 2019-06-28 09:15:50
问题是如果你调用UIView
的init(frame:)
,它不会被你的接口构建器(storyboard/Xib)初始化。
因此您应该使用Xib来初始化视图。就像-
var content: String = ""
static public func instance(content: String, frame: CGRect) -> SuccessfulView? {
let view = Bundle.main.loadNibNamed("SuccessfulFooterContentView", owner: self, options: nil) as? SuccessfulView
view?.frame = frame
// and save your content
view?.content = content
return view
}
然后在awakeFromNib函数中设置您的内容
override func awakeFromNib() {
super.awakeFromNib()
contentLabel.text = content
}
发布于 2019-06-28 09:28:10
你是说
Bundle.main.loadNibNamed("SuccessfulFooterContentView", owner: self, options: nil)
相信这会导致这个变量
@IBOutlet weak var contentLabel: UILabel!
待设置。但是,除非nib中的文件所有者被设置为SuccessfulView类,并且连接了contentLabel
插座,否则不会出现这种情况。
https://stackoverflow.com/questions/56799806
复制相似问题