CustomView中的IBOutlets即将发布。

我创建了自定义视图(xib)。

请查找图像以获取更多信息。

class TextFieldView: UIView {

@IBOutlet var contentView: TextFieldView!
@IBOutlet weak var customTextField: UITextField!
@IBOutlet weak var rightButton: UIButton!
@IBOutlet weak var placeHolderLabel: UILabel!

override init(frame: CGRect) {
    super.init(frame: frame)
    commonInit()
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    commonInit()
}

override func awakeFromNib() {
    super.awakeFromNib()
}

func commonInit()
{
let bundle = Bundle(for: type(of: self))
bundle.loadNibNamed("TextFieldView", owner: self, options: nil)
customTextField.backgroundColor = UIColor.green
NSLog("Called")
}

仍然使用exc_bad_access引发错误。(在loadNibNamed代码行中)

最佳答案

Swift 3版本

这是对我有用的解决方案。确保IB中的文件对象已分配了TextFieldView类(而不是UIView本身)。另外,请确保将所有IBOutlets连接到正确的位置,否则您可能会遇到麻烦。

class TextFieldView: UIView {

    @IBOutlet var contentView: TextFieldView!
    @IBOutlet weak var customTextField: UITextField!
    @IBOutlet weak var rightButton: UIButton!
    @IBOutlet weak var placeHolderLabel: UILabel!


    override init (frame: CGRect) {
                super.init(frame: frame)

                commonInit()
            }

        //This lets us use TextFieldView in IB
        required init?(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
            commonInit()
        }

        private func commonInit() {

                 Bundle(for: TextFieldView.self).loadNibNamed("TextFieldView", owner: self, options: nil)
                //Positioning content so it fills view space
                contentView.frame = self.bounds
                contentView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
                addSubview(contentView)
            }

关于ios - 从Xib加载CustomView时Exc_Bad_Access,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47845279/

10-13 04:11