2009-08-30 13 views
0

私は、TabBarControllerに接続されたUITableViewControllerにメッセージを送信したいと思いますし、naviagationバーを持っています。しかし、私はメッセージを送るために何をすべきか分かりません。現在、(テスト目的のために)、私が持っている:-tabBarController:didSelectViewControllerを使用してビューコントローラにメッセージを送信しますか?

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { 
    NSLog(@"Selected tabbar"); 
    [viewController sendMessage]; 
} 

のNSLogは、コードが持つ次の行に失敗する前に私は近いよ私に語った、「認識されていないセレクタがインスタンスに送信された...」罰金をオフに発射したが、私は間違ったオブジェクトに-sendMessageを送ります。 -sendMessageをUITableViewControllerインスタンスに送信するために探しているのは何ですか?

答えて

0

viewControllerにはviewControllersという配列があります。私の場合、配列には1つのオブジェクトしかありません。それはちょうど推測ですが、私はobjectAtIndex:0は一番上のView Controllerだと思います。ここで

は私が探していたコードです:

activeViewController = [[viewController viewControllers] objectAtIndex:0]; 

あなたは離れて、タブから移動するとなるように、それは少しオフトピックですが、このレベルの制御で、あなたが最後のアクティブなビューコントローラを保存することができますあなたは、あなたが望むメッセージを送ることができます。たとえそれが活発でなければならないのか尋ねることさ

+0

うーん、おそらくこれは間違っていると思います。選択されたUIViewControllerオブジェクトは、ポインタ 'viewController'が指すオブジェクトです。ここに配列は関係しません。問題は、指されたオブジェクトが '@selector(sendMessage)'に応答しないことです – fogelbaby

1

UITableViewControllerインスタンスに-sendMessageというメソッドがあるとします。これはすべての選択のために呼び出されることを忘れないでください。すべてに対応するビューコントローラの?すべてのケースでこれを送信したいと思うのは驚くようです。

NSLog(@"Selected viewController: %@", viewController); 

は、その後、あなたがに話しているオブジェクトか知っているでしょう:あなたはこのような何かを追加することで何が起こっているかについて多くを学ぶことができ

if (viewController == self.tableViewController) 

:おそらく、あなたはのような行を含むことを意味します(少なくともどのクラスか)。

+0

私はそれをある時点でチェックしましたが、私が取り出せるのはです。私はどのように私のUITableViewControllerにメッセージを送信するためにそれを使用するか分からない。助言がありますか? – JoBu1324

+0

UITableViewは、UINavigationControllerの中にネストされているように見えます。これは、実際にタブバーコントローラによって選択されているビューです。表示されたときに実行したいことがある場合は、UITableViewControllerを実装するだけではなく、-viewDidAppearを使用するのはなぜですか? –

+0

これは非常に簡単です;)真剣に考えていますが、これは大きな問題の第一歩でした。大きな問題は、別のタブが選択されたとき(ビューが閉じられないとき)にView Controllerに通知することでした。 – JoBu1324

関連する問題