Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift:以编程方式从xib加载自定义UIView_Ios_Swift_Uiview_Initialization - Fatal编程技术网

Ios Swift:以编程方式从xib加载自定义UIView

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

这在Objective-C中应该相对简单,但我在尝试用Swift实现它时遇到了问题

我有一个
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实例的地方。