2012-02-29 24 views
3

私はここで宿題をやったと思います。tabBarController:shouldSelectViewController:デリゲートが設定されているときに呼び出されない

私のアプリケーションデリゲートが私のUITabBarControllerのデリゲートであることを望みます。

IBを使用して、UITabBarControllerの代理人を私のアプリケーション代理人に接続しました。

アプリの委任ヘッダ・ファイルは次のとおりです。

@interface MyAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> { 

私が実装しようとしているデリゲートメソッドは次のとおりです。

-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController { 
    NSLog(@"shouldSelectViewController called."); 
    // do some stuff with viewController 
    return YES; 
} 

マイアプリデリゲートは、IBで接続したUITabBarControllerへの出口を有します。私がこれをするとき:

NSLog(@"tab bar controller delegate is %@", self.tabBarController.delegate); 

tab bar controller delegate is <MyAppDelegate: 0x6e86a30>のような良い結果が得られます。

私には何が欠けていますか?

+0

一つのことは、タブバーコントローラは、任意のTabBarの項目をクリックitem.justタブバーをタップし、ユーザーに応答して、この(shouldSelectViewController)メソッドを呼び出し書きますその方法をチェックするため。 – Kamarshad

+0

チップをありがとう。そして、はい、それは私がやっていることです。しかし、メソッドはまだ呼び出されていません。 –

+0

私はあなたのコードを試しています。私のために働いてください。 – hchouhan02

答えて

2

[OK]をクリックします。私はRootViewControllerにこのコントローラをデリゲートとして設定した古いコードをいくつか持っていました。 RootViewControllerにはデリゲートメソッドが実装されていないため、何も起こっていないかのように見えました。 RootViewControllerがデリゲートAFTER MyAppDelegateに設定されているため、デリゲートは実際にはRootViewControllerに設定されています。

したがって、レッスンでは、他のオブジェクトもデリゲートとして設定されていないことを確認するためにコードを再確認しています。

+0

うわー!ここも同じ。これは私の問題だとはまだ信じられません...ありがとう! – Amit

5

ちょうど私が言いたいこのコード

self.tabBarController.delegate = self; 
関連する問題