1. ホーム
  2. ios

[解決済み] SwiftのサブクラスUIView

2023-01-09 06:40:53

質問

をサブクラス化したいのですが UIView をサブクラス化し、ログインのようなビューを表示したい。Objective-Cで作成しましたが、今度はSwiftに移植したいと思います。私はストーリーボードを使用しないので、UIはすべてコードで作成します。

しかし、最初の問題は、私は initWithCoder . 呼び出されることはないので、デフォルトの実装にしました。プログラムを実行すると、クラッシュしてしまいます。 initWithFrame も実装しなければならないからです。今、私はこれを得た。

override init() {
    super.init()
    println("Default init")
}

override init(frame: CGRect) {
    super.init(frame: frame)
    println("Frame init")
}

required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    println("Coder init")
}

質問ですが、テキストフィールドなどはどこに作ればいいのでしょうか?また、フレームやコーダーを実装しない場合、どのようにすればquot;hide"することができるのでしょうか?

どのように解決するのですか?

いつもはこんな感じですが、ちょっと冗長です。

class MyView: UIView {
    override init(frame: CGRect) {
        super.init(frame: frame)
        addBehavior()
    }

    convenience init() {
        self.init(frame: CGRect.zero)
    }

    required init(coder aDecoder: NSCoder) {
        fatalError("This class does not support NSCoding")
    }

    func addBehavior() {
        print("Add all the behavior here")
    }
}



let u = MyView(frame: CGRect.zero)
let v = MyView()

(編集: 初期化子の関係をより明確にするために、私の回答を編集しました)