私は多少このようにUIViewのサブクラスを持っている:UIViewサブクラスですべてのプロパティが設定された後で関数を呼び出すにはどうすればよいですか?
class AView: UIView {
var aString = "A String"
var aBool = true
override func didMoveToSuperview() {
func doSomethingWithTheString() {
if aBool {
doSomething(withString: aString)
}
}
}
}
それから私は、ストーリーボードにUIViewのを追加し、それがAView
としてクラスのセット。私は私のビューコントローラにリンクし、次の操作を行います。
@IBOutlet weak var aView: AView!
override func viewDidLoad() {
aView.aBool = false
aView.aString = "Another String"
}
事がdoSomethingWithTheString()
がaBool
はまだtrue
で、aStringのは、私がviewDidLoad()
でそれらを変更していても、まだ"A String"
で呼び出されたときに、です。
AView
のどこかに、doSomethingWithTheString()
を置くことができます。すべてのプロパティが設定されている場合にのみ呼び出されます。私はdidMoveToSuperview()
がそのトリックをすることを望んだが、明らかにまだ早すぎる。
私はプロパティのセッターでそれを呼び出すと思っていましたが、どのプロパティが設定され、デフォルトのまま残されているのか分かりません。最後のプロパティが設定されている場合にのみ呼び出されます。辞書(aDictionary)にaStringのとaBoolを入れ
で動作するように)ビットdoSomethingWithTheStringを(変更もちろん
を宣言しますか? – Eiko
@エイコあなたは 'aView.doSomethingWithTheString()'を呼び出すことを意味しますか?まあ、私はたくさんの関数を呼び出さなければならないかもしれませんし、コードを使う人は、AView自体から自動的に呼び出せれば、それらの関数を常に呼び出さなくてはなりません。また、いくつかの関数は、プライベートプロパティをパラメータとして取るか、またはユーザが何も知らないパラメータだけを受け取ることがあります。理想的には 'AView'クラスの中で呼びたいと思います。 – dbmrq
あなたの関数の奇妙な定義: 'func didMoveToSuperview()の動作は何ですか?{ func doSomethingWithTheString(){}}' – Xvolks