1. ホーム
  2. ios

[解決済み] Swift で XIB ファイルを使用してカスタム UIView クラスを初期化/インスタンス化する方法

2022-04-28 21:36:27

質問

というクラスがあります。 MyClass のサブクラスである UIView で初期化したいのですが XIB ファイルを作成します。という xib ファイルでこのクラスを初期化する方法がよくわかりません。 View.xib

class MyClass: UIView {

    // what should I do here? 
    //init(coder aDecoder: NSCoder) {} ?? 
}

解決方法は?

このコードをテストしてみましたが、とてもうまくいきました。

class MyClass: UIView {        
    class func instanceFromNib() -> UIView {
        return UINib(nibName: "nib file name", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as UIView
    }    
}

ビューを初期化し、以下のように使用します。

var view = MyClass.instanceFromNib()
self.view.addSubview(view)

または

var view = MyClass.instanceFromNib
self.view.addSubview(view())

UPDATE Swift >=3.x & Swift >=4.x

class func instanceFromNib() -> UIView {
    return UINib(nibName: "nib file name", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! UIView
}