我有一个.xib文件,它有几个按钮,其类名为ContentView
。
然后我按如下方式设置了课程。
class ContentView: UIView {
override init() {
// Size doesn't matter
super.init(frame: CGRect(x: 0, y: 0: width: 500, height: 500))
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
fatalError("init(coder:) has not been implemented")
}
}
现在假设我想在我的主ViewController
课程中添加此视图
我用:
var contentView: ContentView = ContentView()
self.view.addSubview(contentView)
然而,contentView似乎没有被添加到我的主视图控制器中(我无法看到它,所以我认为它没有被添加。)
答案 0 :(得分:1)
对Xib执行此过程
vc : ViewController = ViewController(nibName: "ViewController", bundle: nil) //change this to your class name
self.presentViewController(vc, animated: true, completion: nil)
并确保:您正在使用nibName,否则您的xib预加载内容将不会显示。
答案 1 :(得分:0)
实例化这样的视图不会使用您的xib文件。相反,您使用
-[NSBundle loadNibNamed:owner:options:]
并提供必要的输入(笔尖名称,所有者等)。
使用- loadNibNamed:owner:options:
会产生的另一个问题是您在fatalError
实现中调用initWithCoder:
,该实现用于通过解码进行nib实例化。相反,请正确实施initWithCoder:
。