編集のプロパティにアクセス:ペン先のオブジェクトは、(サブビュー)は簡潔にするためのViewController
はどのようにそのスーパービューとそのスーパーのビューコントローラでサブビューのアクセスプロパティ?簡単にチェーンを降りることができます。どうやって元に戻るの?
オリジナル(詳細)ポスト:
私が解決しようとしている当面の問題は、やや複雑なビューの「誕生」を簡略化しています。大きな画像はNibと、ビューがロードされたときに簡単なイニシャライザを超えたサブクラス(特にUIViewのもの)がどのように再構成されるかです。
私はいくつかのカスタムUIViews - 私のviewcontrollerのビューのサブビューのサブビューがあります。特にこれらのビューをインスタンス化するときには、View Controllerのいくつかのプロパティ(NSNumberFormatter、& NSDictionary)への参照が必要です。
Currenty私はそれらをインスタンス化するためのメソッドを使用します。
- (id)initWithFrame:(CGRect)frame items:(NSDictionary *)dictionary forEditingMode:(EditingMode)mode
私は彼らが自分自身を再構成できるようにペン先にそれらを動かして実験し、基本的な設計上の問題に実行していますよ。私はinitWithFrameをデフォルトの初期化子に限定していますか?そうであれば、これらのオブジェクトはどのように親ビューコントローラを見て、辞書やその他のプロパティへの参照を取得できますか?
initWithFrame(UIApplicationデリゲートを取得するものに似たメソッド)で呼び出せるメソッドはありますか?代わりに、その子ビューがメソッドを親ビューやコントローラに送信できるようにするメソッドはありますか?
あなたは、ビューのスーパーやビュー、コントローラに接続して取得コンセントを設定し、awakeFromNib
で情報を引き出すことができます...私は私が何かを壊すんだと確信している、MVC警察に
このように、スーパービューまたはビューコントローラを指し示すこれらのサブビューにIBOutletを挿入するといいでしょうか?私は前にそれを見つけたことはありません...それはかなり一般的ですか? – Meltemi
それは基本的にデリゲートパターンです。あなたはサブビューに 'delegate'という名前のコンセントとデリゲートプロトコルを与えます(歴史的にはこれは非公式ですが、オプションのメソッドでは正式なプロトコルを使うことができます)。次に、スーパービューをプロトコルに準拠させます。最後に、IBまたはアクセサーメッセージを使用してデリゲートとして設定します。 –
うわー、ピーターが言ったように、あなたのView Controllerは本質的にサブビューの代理人になります。これを 'assign'プロパティにすることを忘れないでください。そうしないと、保持サイクルが終了します。 –