2016-04-04 7 views
0

私は多少このように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を入れ

+0

で動作するように)ビットdoSomethingWithTheStringを(変更もちろん

var aDictionary: NSDictionary? { didSet{ doSomethingWithTheString() } } 

を宣言しますか? – Eiko

+0

@エイコあなたは 'aView.doSomethingWithTheString()'を呼び出すことを意味しますか?まあ、私はたくさんの関数を呼び出さなければならないかもしれませんし、コードを使う人は、AView自体から自動的に呼び出せれば、それらの関数を常に呼び出さなくてはなりません。また、いくつかの関数は、プライベートプロパティをパラメータとして取るか、またはユーザが何も知らないパラメータだけを受け取ることがあります。理想的には 'AView'クラスの中で呼びたいと思います。 – dbmrq

+0

あなたの関数の奇妙な定義: 'func didMoveToSuperview()の動作は何ですか?{ func doSomethingWithTheString(){}}' – Xvolks

答えて

0

は、その後のviewDidLoadの終わりにそれを呼び出すないのはなぜ辞書

+0

クリエイティブソリューション。 :)ありがとう! – dbmrq

関連する問題