2011-08-04 9 views
0

私は、オプションメニューに渡すボタンを持っているビューコントローラを持っています。以前に割り当てられたUIViewControllerにデータを渡します。

オプションが設定されている場合、以前に割り当てられたビューコントローラーに戻る必要があります。

オブジェクトの「alloc and init another」インスタンスなしでこれはどのように可能ですか?

答えて

0

initオプションのviewControllerを使用している場合は、親に参照を渡します。

I.E.

[[OptionViewController alloc] initWith...: parent:]; 

@propertyかの方法を使用するか、または背面のデータを渡すために、親に呼び出すことsomesuch。

+0

親がアクセス権を持ち、 'viewWillAppear:'コールバックで参照できる情報ホルダオブジェクトへの参照を渡すこともできます。 –

+0

私は親を持つオブジェクトを割り当てます。その割り当てられたオブジェクトの親はそれを割り当てるオブジェクトになります(自己) – MrPink

+0

正しい。したがって、:[[OptionViewController alloc] initWith ...:parent:self]; ' –

2

デリゲートプロトコルを使用すると、これを実現できます。最初のビューコントローラは2番目のビューコントローラのデリゲートになり、選択が完了したら最初のビューコントローラでこのデリゲートメソッドを呼び出すことができます。

Googleでは、代理人の実装を目的別に検索できます。それはかなりシンプルです。

@protocol <delegatename> 
<declare delegate method> 
@end 

デリゲートを割り当てるための2番目のビューコントローラにメンバー変数を作成します。デリゲートを実装するクラスでメソッドを定義します。

+0

他の回答はもっと簡単に思えるかもしれませんが、実際にSDKの原則に従おうと思っているなら、これは*道のりです。 – Cyrille

+0

よく、カスタムの委任は全く新しいものです。私は最後の1時間を頭の中に入れようと努力しました。私はいくつかのコードを簡単に説明してくれますか?これは私が完全に混乱しているからです。 – MrPink

+0

私はちょうどそのブログ記事を書いた。 www.iprav.inをご覧ください。 –

0

共有シングルトンを使用できますか? http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html

それともnsuserdefaultsにパラメータを保存して、あなたの最初のViewController

または他のいくつかの一時ストアにバックでそれらを読んで なごappdelegate

ように私は前に上記のアプローチの3つすべてを使用しました。

+0

親コントローラがアプリケーション内で複数のスタックに同時に存在することができる場合は、グローバル(単体やAppDelegateなど)をコードからリファクタリングする必要があります。 –

関連する問題