マイUIView
ルックス:initを使用したUIView引数はありますか?このような
override init (frame : CGRect)
{
super.init(frame : frame)
}
私のような引数を追加したい:私はinit
と一つに引数を送ることができますので、それを行うには正しい方法です何
override init (frame : CGRect, number:Int)
行?
マイUIView
ルックス:initを使用したUIView引数はありますか?このような
override init (frame : CGRect)
{
super.init(frame : frame)
}
私のような引数を追加したい:私はinit
と一つに引数を送ることができますので、それを行うには正しい方法です何
override init (frame : CGRect, number:Int)
行?
をあなたはこのような何かあなたのクラスを定義します
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)
明らかにあなたが有益なフレームを渡すを。
あなたはこのような何か行うことができます。
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)
デコーダーのinitで数値が初期化されていないというエラーはスローされませんか? –
@ J.Doe私が遊び場で持っていた他のものを掃除した後、私はエラーが出るので、私の答えは 'init?(coder:)'メソッドで "number"を初期化する必要性を反映するように更新しました。 – rmaddy
大変ありがとうございます。 – Curnelious