Swift 自定义控件在视图控制器中使用时不显示(附代码)

Swift custom control is not showing when being used in view controller (code attached)

当我尝试在我的主视图控制器中使用此自定义控件时,通过将 UIView 拖到 IB 中的屏幕上并将其设置为 "CustomerControlView",它实际上并没有显示它。

问题 - 我这里的代码有什么问题?

背景 - 所以基本上想: a) 在IB中设计一个客户控件 b) 所以我假设我创建了 NIB 文件,然后创建了一个 UIView 文件,这就是我所做的

NIB 截图 & swift 文件

代码

import UIKit

class CustomControlView: UIView {

//    @IBOutlet var icon: UIImageView!
//    @IBOutlet weak var view: UIView!

    @IBOutlet weak var button: UIButton!
    @IBOutlet weak var text1: UITextField!
    @IBOutlet weak var text2: UITextField!

    override init(frame: CGRect) {
        print("override init(frame: CGRect) ")
        super.init(frame: frame)
    }

    required init?(coder aDecoder: NSCoder) {
        print("required init?(coder aDecoder: NSCoder)")
        super.init(coder: aDecoder)

//        let arr = NSBundle.mainBundle().loadNibNamed("CustomControlView", owner: nil, options: nil)
//        let v = arr[0] as! UIView
//        self.view.addSubview(v)
    }


}

显示我如何将自定义视图包含到主 viewController 视图中的快照:

只需在 class 行上方添加 @IBDesignable 即可告诉 Xcode 在故事板中显示之前对其进行编译。这里有关于这个主题的精彩讨论:http://nshipster.com/ibinspectable-ibdesignable/

此外,您需要确保正在加载 NIB:

override init(frame: CGRect) {
    print("override init(frame: CGRect) ")
    super.init(frame: frame)
    xibSetup()
}

required init?(coder aDecoder: NSCoder) {
    print("required init?(coder aDecoder: NSCoder)")
    super.init(coder: aDecoder)

    xibSetup()

}


func xibSetup() {
    view = loadViewFromNib()
    view.frame = bounds
    view.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
    addSubview(view)
}

func loadViewFromNib() -> UIView {
    let bundle = NSBundle(forClass: self.dynamicType)
    let nib = UINib(nibName: "CustomNumberPad", bundle: bundle)
    let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView
    return view
}