テックキャンプ169日目〜ビューを使い回す

kobasaです(´ω`*)
クーポン新規登録画面と登録したクーポンを編集する画面が、
似たような表示になりそうなので使い回す方法を調べていました。

まずは使い回すビューをxibファイルというもので作成します。
次にビューを管理するカスタムクラスを作成して共通の処理を記述します。
最後にコントローラーごとにカスタムクラスを呼び出して、任意の処理を記述する形になるようです。

①使い回すビューを作成(xbiファイル)

「New File」→「View」を選択。Save As:欄にファイル名を入れて作成します。
完了すると拡張子が.xbiのファイルが作成されます。
あとはラベルや画像を配置してビューを作っていきます。

②カスタムクラスを作成

class CouponRegisterViewOwner: NSObject {
    
    var couponRegisterView: UIView!
    
    override init(){
        super.init()
        
        couponRegisterView = UINib(nibName: "CouponRegisterView", bundle: Bundle.main).instantiate(withOwner: self, options: nil).first as? UIView
    }

クラスはNSObject型で、override init()内に紐付けるビューを指定します。
nibNameはxibファイル名。withOwner: selfを指定することで、
xib内のラベルやボタンを@IBOutletで繋げるみたいです。(まだ作業中)
あとは共通の処理をこのクラス内に記述すればいいはず。

③各コントローラーからカスタムクラスを呼び出し

class NewRegisterViewController: UIViewController {
    
    var couponRegisterViewOwner: CouponRegisterViewOwner!
    
    override func loadView() {
        super.loadView()
        
        couponRegisterViewOwner = CouponRegisterViewOwner()
        
        // コントローラーごとの処理
        couponRegisterViewOwner.couponRegisterView.backgroundColor = .blue

        view.addSubview(couponRegisterViewOwner.couponRegisterView)
    }

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

override func loadView()内でカスタムクラスを呼び出し、コントローラーごとの処理を記述します。
上記ではこのコントローラーから呼び出された場合は背景色を青色にする記述です。
最終的には決定ボタンの文字を新規登録では「登録」、編集では「更新」にしたいです。
使い回せることは確認できたので、次は@IBOutlet接続と処理を進めていきます。

コメント

タイトルとURLをコピーしました