Ios Swift:以编程方式从xib加载自定义UIView
这在Objective-C中应该相对简单,但我在尝试用Swift实现它时遇到了问题 我有一个Ios Swift:以编程方式从xib加载自定义UIView,ios,swift,uiview,initialization,Ios,Swift,Uiview,Initialization,这在Objective-C中应该相对简单,但我在尝试用Swift实现它时遇到了问题 我有一个xib和两个自定义UIView的IBOutlet。但是当我初始化视图时,我得到一个错误,说我的IBOutlets是nil 以下是我的看法: import UIKit class MessageView: UIView { @IBOutlet weak var messageLabel: UILabel! @IBOutlet weak var genderImageView: UIImag
xib
和两个自定义UIView的IBOutlet。但是当我初始化视图时,我得到一个错误,说我的IBOutlets是nil
以下是我的看法:
import UIKit
class MessageView: UIView {
@IBOutlet weak var messageLabel: UILabel!
@IBOutlet weak var genderImageView: UIImageView!
override convenience init() {
self.init(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
}
override init(frame: CGRect) {
super.init(frame: frame)
}
convenience init(message: String, gender: Gender) {
self.init(frame: CGRectMake(0, 0, 320, 40))
messageLabel.text = message
genderImageView.image = UIImage(named: "male")
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
我正在从我的视图控制器调用便利初始值设定项,它在messageLabel.text=message
行失败,表示messageLabel
为nil
我想
self.init(frame:)
会初始化我的xib吗?我哪里出了问题?您如何初始化它?您需要实例化nib文件并从那里加载视图。View.init将不使用nib。只有代码。我应该在哪里初始化它?搜索“从nib加载视图”已为此加载qs。对,因此NSBundle.mainBundle().loadNibNamed(“MessageView”,所有者:self,选项:nil)
。但是我应该把它放在哪里呢?你应该把代码放在你想要创建MessageView实例的地方。