0

これはかなり基本的なことだと思いますが、それについて何も見つけることができませんでした。

私はviewControllerウィッチを持っていますフォームシートviewControllersの束を持つnavigationControllerへのモーダルセグエがあります。このような:

viewController A ---(モーダル セグエ)---> navigationController ---> viewController B ---> viewController C

viewController CI では、次のようにデリゲートを作成しました。

@protocol ViewControllerCDelegate <NSObject>
- (void)myMehtod;
@end

@interface ViewControllerC : UIViewController

@property (nonatomic, assign) id <ViewControllerCDelegate> myDelegate;

(そして、myDelegate を合成しました)

myDelegate を viewController A に設定したいのですが、質問は、どこで、どのように行うのですか?

私はviewController AのviewDidLoadでこれを試みました:

ViewControllerC *delegateController = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewControllerC"];
delegateController.myDelegate = self;

しかし、デリゲートは設定されていないようです。アイデア?

4

1 に答える 1

0

instanceViewController を実行すると、新しいViewControllerAが作成されます。既存の ViewControllerA が必要な場合は、それをコントローラーのチェーンに渡す必要があります。それが問題になる場合は、アプリのデリゲートにプロパティを作成して保存できます。アプリ デリゲートをグローバル変数のクリアリング ハウスとして使用することに反対する人もいるかもしれませんが、4 レベルのビュー コントローラーを介してポインターを渡すよりはクリーンである可能性があります。この場合、本当にデリゲート パターンが必要ですか? 多分 NSNotificationCenter はよりクリーンなオプションでしょうか?

于 2013-03-21T18:15:34.990 に答える