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
接続と処理を進めていきます。
コメント