我的UITabBarController的didSelectViewController方法没有被调用?

mob*_*bob 3 iphone cocoa-touch callback uitabbarcontroller

这是我的app-delegate.m的代码存根 - 它永远不会被调用.

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    NSLog(@"%s", __FUNCTION__);
}
Run Code Online (Sandbox Code Playgroud)

它在app-delegate.h中定义

@interface OrioleAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> {
    UIWindow *window;
    UITabBarController *tabBarController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;

@end
Run Code Online (Sandbox Code Playgroud)

Sha*_*rog 15

您是否在您UITabBarController和您的申请代表之间建立了联系?

- (void)applicationDidFinishLaunching:(UIApplication *)application
{
     ...
     tabBarController.delegate = self;
     ...
}
Run Code Online (Sandbox Code Playgroud)


Ced*_*rie 15

如果您的ViewController是a UITabBarController,则需要将self设置为委托,因为您无法UITabBar直接更改其委托.

例如,在你的ViewDidLoad中UITabBarController:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.delegate = self;
}
Run Code Online (Sandbox Code Playgroud)