2017-11-23 108 views

答えて

1

をあなたはこのような何かあなたのクラスを定義します

class MyView: UIView { 
    let number: Int 

    init(frame: CGRect, number: Int) { 
     self.number = number 

     super.init(frame: frame) 
    } 

    required init?(coder aDecoder: NSCoder) { 
     // Need to initialize the number property here. Do so appropriately. 
     super.init(coder: aDecoder) 
    } 
} 

numberプロパティの使用は単なる例です。あなたが実際に必要とするものを行います。

そして、あなたはこのようなインスタンスを作成します:

let mv = MyView(frame: .zero, number: 42) 

明らかにあなたが有益なフレームを渡すを。

+0

デコーダーのinitで数値が初期化されていないというエラーはスローされませんか? –

+0

@ J.Doe私が遊び場で持っていた他のものを掃除した後、私はエラーが出るので、私の答えは 'init?(coder:)'メソッドで "number"を初期化する必要性を反映するように更新しました。 – rmaddy

+0

大変ありがとうございます。 – Curnelious

1

あなたはこのような何か行うことができます。

class CustomView: UIView{ 

var number: Int 

init(frame : CGRect, number: Int) { 

    self.number = number 
    print("Number = \(number)") 
    super.init(frame: frame) 
} 

required init?(coder aDecoder: NSCoder) { 

    fatalError("init(coder:) has not been implemented") 

    } 

} 

をそのように似スタックに追加します。

let viewToAdd = CustomView(frame: CGRect(x: 20, y: 72, width: 100 , height: 100), number: 1) 
    viewToAdd.backgroundColor = .red 
    self.view.addSubview(viewToAdd) 
関連する問題