Passion make things more better

Ruby on Rails / React.js / Swift / AWS / Docker

SwiftでxibをカスタムViewとして使用する時の諸々

SwiftでStoryboard等を使っている場合、すべてのViewに関する処理を、同一のViewControllerに書くと、とても長くなってしまいます。そのため、Viewの切り出しを行う方が多いかと思います。以下でその分割方法について書いていきます。

xibをカスタムViewとして使用する方法

  1. UIView(以下CustomView.swiftと呼ぶ)とxib(以下CustomView.xibと呼ぶ)のファイルを作成する
  2. CustomView.xibで配置したViewのFile's OwnerにCustomViewを指定する
  3. CustomView.xibで配置したViewをCustomView.swiftcontentViewという名前で紐付ける
  4. CustomView.swiftにxibを読み込むための処理を記述する(以下参照)
import UIKit

class CustomView: UIView {

    @IBOutlet var contentView: UIView!
        
    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)!
        loadXib()
    }
    
    private func loadXib() {
        NSBundle.mainBundle().loadNibNamed("CustomView", owner: self, options: nil)
        contentView.frame = CGRectMake(0, 0, frame.size.width, frame.size.height)
        addSubview(contentView)
    }
}

あとは実際に使うところでUIViewのClassをCustomViewにすれば動くかと思います。

参考