tabBarController:shouldSelectViewController:设置委托时不调用

时间:2012-02-29 04:40:05

标签: iphone ios cocoa-touch delegates uitabbarcontroller

我想我已经完成了我的作业。

我希望我的app委托成为我UITabBarController的委托。

使用IB,我已将UITabBarController的委托连接到我的应用程序代表。

App Delegate Header文件是:

@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>

我错过了什么?

2 个答案:

答案 0 :(得分:5)

只需编写此代码

self.tabBarController.delegate = self; 

答案 1 :(得分:2)

好的,找到了解决方案。我的RootViewController中有一些旧代码将此控制器设置为委托。 RootViewController上没有实施任何委托方法,因此似乎没有发生任何事情。由于RootViewController被设置为MyAppDelegate之后的委托,因此委托实际上设置为RootViewController

所以本课程是仔细检查你的代码,以确保其他一些对象也没有被设置为委托。