2012-03-08 3 views
0

別のView Controllerでメソッドを呼び出すときに問題があります。ここで親の親であるView Controllerのメソッドを呼び出す

は私の設定です: ViewController1 - > ViewController2 - > ViewController3

ViewController1はWEPopoverController呼び出しを使用してViewController2を呼び出します。

UIViewController2 *viewCon2 = [[UIViewController2 alloc] init]; 

navPopover = [[WEPopoverController alloc] initWithContentViewController:viewCon2]; 
[navPopover presentPopoverFromRect:CGRectMake(0, 0, 50, 57) 
           inView:self.view 
      permittedArrowDirections:UIPopoverArrowDirectionUp | UIPopoverArrowDirectionDown 
          animated:YES]; 

私はViewController3がViewController1内に存在するメソッドを呼び出すことができるようにしたいと思います。 ViewController3はViewController1から直接初期化されていないので、ViewController1のメソッドを呼び出すためにデリゲートメソッドを使用する方法を理解できませんでした。

アイデア?

答えて

1

はその後(のdeallocでオブザーバを削除しません)。..

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(methodFromViewController3) name:@"Message" object:nil]; 

を行を追加します。.. ポスト通知

[[NSNotificationCenter defaultCenter] postNotificationName:@"Message" object:nil userInfo:nil]; 

ときP ost通知methodFromViewController3メソッドは最初のビュー(ビューコントローラに追加する必要があります)から呼び出されます。あなたのケースでは、呼び出す既存のメソッドの名前に変更できます。 。

+0

オリジナルのポスターが尋ねていたと思う方法であることを通知する方法に通知を使用しないでください。通知は特別な状況のためのものです。この詳細については、@Alexanderのリンクを参照してください –

+0

私は彼の答えが良かったと知っています..しかし、なぜ私は投票していますか... ...すべてが自分のペースで来る.... @ sw333tは通知について知らないそれ自身...あなたは彼にコミュニケーションオブジェクトを説明する完全な文書を取って欲しいです...それは彼をもっと混乱させます.. – Shubhank

+0

彼が通知について知らないなら、それは始める場所ではありません。適切なオブジェクトデザインで開始し、基本を構築し、通知などのより高度なトピックに進む場所。それ以外の場合は、通知は、悪い習慣である他のクラスのメソッドを呼び出すデフォルトの方法であることを意味します。 –

3

クラス間の通信にはいくつかの方法があります。詳しくはhereをお読みください。あなたはviewcontroler 3からビュー1でメソッドを呼び出したいときにViewController1 vieDidLoad

+0

+1質問アスカーに多くのことを教えします情報を提供するためのものそれらに恩恵を受けるであろう。 –

+0

plus 1リンクを使用して質問に答えるために投票した場合... –

0

VC3がVC2への参照を持っている、とVC2はVC1への参照を持っている場合は、VC3でこのようにそれを行うことができます。

ClassOfViewController2* vc2 = [self viewController2]; 
ClassOfViewController1* vc1 = [vc2 viewController1]; 
[vc1 myAwesomeMethod]; 
+0

そうすることで、クラスのすべてがチェーン内の他のすべてのクラスについて知る必要があります。これはあまり良くありません。 –

関連する問題