【问题标题】:How to load xib to UIView subclass, Swift, iOS如何将 xib 加载到 UIView 子类、Swift、iOS
【发布时间】:2015-03-15 15:35:06
【问题描述】:

我有一个名为 ContentView.xib 文件,我想将其用作名为 ContentView 的类的视图,但我似乎无法加载它。

class ContentView: UIView {
    override init() {
        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")
    }
}

我知道您可以使用以下方法加载xib,但这样做时会出错:

var contentViewXib: NSArray = NSBundle.mainBundle().loadNibNamed("ContentView", owner: nil, options: nil)

我还将xibs 文件所有者设置为ContentView,并将其在界面构建器中的自定义类设置为我要使用的类。

感谢任何帮助。谢谢

【问题讨论】:

    标签: ios swift uiview xib


    【解决方案1】:

    如果你将File的所有者设置为ContentView,那么你XIB中的视图就不是ContentView,而是普通的UIView,ContentView可以检索到。

    在 ContentView 的 init 方法中,像您在问题中写的那样调用 NSBundle.mainBundle().loadNibNamed() 然后输入:

    self.addSubview(contentViewXib[0])
    

    您还需要为这个新视图设置约束或自动调整掩码。

    编辑: 另一种解决方案是直接选择视图(不是文件的所有者)并将其类更改为 ContentView。

    【讨论】:

    • 我现在收到以下错误fatal error: init(coder:) has not been implemented 虽然我已经实现了required init(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") }
    • @StephenFox 检查这个:stackoverflow.com/questions/24036393/…
    猜你喜欢
    • 2016-06-10
    • 2016-02-29
    • 2011-10-11
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多