読者です 読者をやめる 読者になる 読者になる

【swift】ViewControllerとViewを分離させてViewControllerの記述を減らす

最近は、storyboardもxibも使わない方針で実装しているため、Viewを構築するのも全てコードで定義しています。

特に考えなければ、initializeの時に組み立ててしまうのですが、そうするとViewControllerとは関係のないコードが増えていき、可読性が悪くなります。

class ViewController: UIViewController {

    init() {
        super.init(nibName: nil, bundle: nil)

        // ここで組み立ててしまうとあっという間に行数が増えていく...
        addSubview(UIView())
        addSubview(UIView())
    }

}

その変わりに、View自体を独自クラスにしてあげて、それをViewControllerで読み込むようにすれば、Viewの組み立てを分離できます。
ViewControllerにはloadViewというメソッドが定義されているので、それをoverrideして、独自に定義したViewクラスを設定します。

class ViewController: UIViewController {
    overide func loadView() {
        view = SampleView()
    }
}

class SampleView: UIView {
    init() {
        super.init(frame: .zero)
      
        // Viewの組み立てはここでしてしまう
        addSubview(UIView())
        addSubview(UIView())       
    }
}

developer.apple.com