2017-12-16 4 views
0

CustomView의 IBOutlet이 0으로 표시됩니다.Exc_Bad_Access Xib에서 CustomView를로드하는 중

사용자 정의보기 (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와 오류를 던지고

+1

어떤 이미지? XIB에이 콘센트를 연결 했습니까? –

답변

0

(코드 loadNibNamed 라인에서) 당신이 좋아하는 뭔가가 필요합니다.

/// This view must be connected with the main view of the XIB. 
@IBOutlet private var view: UIView! 

/// This method is used when creating an `ApexView` with code. 
override init(frame: CGRect) 
{ 
    super.init(frame: frame) 

    initView() 
} 

/// This method is called when instantiated from a XIB. 
required init?(coder aDecoder: NSCoder) 
{ 
    super.init(coder: aDecoder) 

    initView() 
} 

private func initView() 
{ 
    /// Fill in the name of your XIB. I assumed it `"TextFieldView"`. 
    Bundle.main.loadNibNamed("TextFieldView", owner: self, options: nil) 

    self.view.frame = CGRect(x: 0.0, y: 0.0, width: self.width, height: self.height) 
    self.addSubview(self.view!) 

    ... 
} 
+1

'Bundle.main'을 사용하지 마십시오. 'Bundle (for : class)'를 사용하십시오. – Sulthan

+0

@Sulthan 왜 안되며'번들 (for : class) '의 사용법은 어떻게 보이겠습니까? –

+1

'번들 (for : type of (of : self))', IB에서로드 된 designables로 작업을 시작할 때 주 번들이 다르다는 것을 이해하게 될 것입니다. – Sulthan

관련 문제