私はUILabelをサブクラス化しようとしています。プロパティの値を自動的に生成して、いくつかの値で初期化し、他のものをランダムに生成することができます。クラスプロパティの値を生成
たとえば、ここでは新しいMyLabelを作成し、labelStringの値を渡して、labelNumberの値をランダムに生成したいと考えています。
class MyLabel: UILabel {
var labelString : String!
var labelNumber : Int!
init(frame: CGRect, labelString: String) {
self.labelString = labelString
self.labelNumber = createNumber()
super.init(frame: frame)
}
func createNumber() -> Int {
return Int(arc4random())
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
super.initが自己を初期化する前に、「メソッド呼び出しで 'self'を使用する」というエラーが表示されます。これを修正する方法や、より良いパターンを使用する方法がありますか?
何か助けてくれてありがとう!
ちなみに、 'labelString'と' labelNumber'を* Optional *にしたいと思う特別な理由はありますか?あなたがそれらを "無条件"にする理由は何でしょうか?その場合、それらを読むことは、* Implicitly Unwrapped Optional *を行ったのでクラッシュします。 – vacawama
パラメータオプションを別のレッスン(盲目的)の後に出てきましたが、私の場合は必要ありません。したがって、2番目の解決策はオプションではなく、ここでは機能しませんが、静的関数は完璧です!助けてくれてありがとうございました。 – enesefuu
よろしくお願いいたします。 2番目のソリューションを 'var labelNumber = 0'と宣言することで、非標準的なオプションで動作させることができます – vacawama