tabBar didSelectItem似乎不起作用

Row*_* Po 7 iphone xcode uitabbar ios

在我的头文件中,我有这个:

@interface TabBarController : UIViewController <UIApplicationDelegate, UITabBarDelegate, UITabBarControllerDelegate>{

    IBOutlet UITabBarController *tabBarController;

}

-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item;

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

@end
Run Code Online (Sandbox Code Playgroud)

在我的主文件中,我有这个:

@synthesize tabBarController;

-(void)viewDidLoad{
    [super viewDidLoad];
    self.tabBarController.delegate = self;
    self.view = tabBarController.view;
}

-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{
    NSLog(@"rawr"); 
}

- (void)viewDidUnload {
    [super viewDidUnload];
}

- (void)dealloc {
    [tabBarController release];
    [super dealloc];
}


@end
Run Code Online (Sandbox Code Playgroud)

我已经tabbarcontroller在界面构建器中将我作为委托连接到我的文件所有者,但它仍然从不调用该didSelectItem方法.

这里有什么我想念的吗?

我已经添加了tabBarController.delegate = self;它仍然无法正常工作.

ide*_*ome 15

-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item;
Run Code Online (Sandbox Code Playgroud)

这个方法是UITabBar的委托方法,而不是UITabBarController,所以

self.tabBarController.delegate = self;
Run Code Online (Sandbox Code Playgroud)

不管用.

标签栏控制器有自己的UITabBar,但是不允许更改由标签栏控制器管理的标签栏的委托,所以只需尝试UITabBarControllerDelegate方法,如下所示:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记将`<UITabBarControllerDelegate>`添加到你的app委托的.h和类似`UITabBarController*tabBarController =(UITabBarController*)self.window.rootViewController; tabBarController.delegate = self;`在`didFinishLaunchingWithOptions`方法中. (4认同)

iOS*_*Dev 1

你需要添加这个:

tabbarcontroller.delegate = self;
Run Code Online (Sandbox Code Playgroud)