-2

私はViewControllerBをナビゲーションスタックにプッシュするViewControllerAを持っており、ViewControllerCをスタックにプッシュします。NSNotificationCenterセレクタメソッドを複数のView Controllerで使用できますか?

ViewControllerBから、私はViewControllerAにポップすることができます。 ViewControllerCから、私はViewControllerAにポップアップすることができます。

私は(私はAにポップするために使用していたコントローラに依存して)BCいずれかからViewControllerAからNSNumberを渡す必要があります。

私は次のことを組み込むつもりです:

- (void)viewDidLoad 
{ 
    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(getUpdate:)   
               name:@"getUpdateForCell" 
               object:nil]; 
} 

と実装:

- (void)getUpdate:(NSNotification *)notification { 
    NSDictionary *data = [notification userInfo]; 
    // pop 
} 

は私がViewControllerBViewControllerCの両方でgetUpdate:を実装する/使用することはできますか?

+0

はい、使用できます。 –

+0

あなたの質問を再投稿しないでください。必要に応じて、元の質問を更新してより明確にします。 – rmaddy

+0

私の謝罪、私は私の以前の投稿からレスポンダから明確な答えを得ることができませんでした。以前の投稿を削除する必要がありますか? –

答えて

0

ViewControllerCからViewControllerBのような1つの接続では、@protocol(委譲設計パターン)を使用できます。しかし、ある場所から何かを更新する必要がある作業の場合は、NSNotificationCenter

を使用する必要があります。したがって、現在のタスクの実装は正しいです。

+0

ありがとう、それは知っておいしいです。私はデリゲートデザインパターンを実装しようとしていましたが、 'A 'がデータを受け取るために使用する' ViewControllerB'のインスタンスは、ある時点ではもはや存在しないかもしれないことに気付きました。スタックから 'B'を削除する' ViewControllerB'にはforward/backボタンがあり、スタックに置かれる 'B'の別のインスタンスを作成します(これは100レベルのゲーム用です)。元のインスタンスは 'ViewControllerA'との接続を失います。少なくとも私は思うだろう、そう? –

+0

ViewControllerBに代理プロパティが必要です。 AからViewControllerBオブジェクトを作成するたびに、delegateプロパティをselfに設定する必要があります(Aからのものである場合) – ghkaren

+0

私はこれを持っているとしましょう: 'ViewControllerB * object = [[ViewControllerB alloc] init]; object.delegate = self; '' self''は 'ViewControllerA'からのオブジェクトであり、' B''からのデリゲートです。その 'B'インスタンスを破棄して新しいインスタンスを作成すると、' A'の 'self'オブジェクトはどのように代理人との接続を改革しますか? –

関連する問題