的TabBar didSelectItem似乎并没有被工作(tabBar didSelectItem

2019-09-17 21:44发布

在我的头文件我有这样的:

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

    IBOutlet UITabBarController *tabBarController;

}

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

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

@end

在我的主文件我有这样的:

@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

我已经连接了我的tabbarcontroller作为代表到我的档案在界面生成器拥有者,但仍然没有调用didSelectItem方法。

有什么,我在这里失踪?

我已经添加了tabBarController.delegate = self; 它仍然不起作用。

Answer 1:

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

这种方法是UITabBar,没有一个的UITabBarController委托方法,所以

self.tabBarController.delegate = self;

不管用。

标签栏控制器都有自己的UITabBar,但改变一个标签栏控制器管理的标签栏的代表是不允许的,所以只是尝试这样UITabBarControllerDelegate方法:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController


Answer 2:

你需要补充一点:

tabbarcontroller.delegate = self;


Answer 3:

使用UITabBarControllerDelegate代替UITabBarDelegate
-tabBarController:didSelectViewController{}代替tabBar:didSelectItem{}

接口

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

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

主文件

@implementation TabBarController
    @synthesize tabBarController;

    /*other stuff*/
    - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
        NSLog(@"rawr"); 
    }
    /*other stuff*/
@end


Answer 4:

刚刚成立的标签栏的委托。 您可以通过设置做self.tabBarController.delegate = self; 或者使用界面生成器做的tabbarcontroller对象(不会吧)看到的连接检查并拖动文件的所有者连接。



Answer 5:

你已合成的标签栏,所以你现在需要写: self.tabBarController.delegate = self;



Answer 6:

原因是多方面的,如上面所指出的,为什么它可能无法正常工作。 这里是一个更微妙的原因。 如果你创建你的UI编程(没有故事板或XIB),你需要设置一个UIWindow的屏幕。

self.window = [[UIWindow alloc] init];
self.window.screen = [UIScreen mainScreen];  // <- The UITabViewController will not
                                             //    accept taps without this.

如果您使用的是厦门国际银行,我相信这是相当于拥有“在启动全屏”选择。 这必须检查或者我注意到我的标签不起作用。

更新:如果你一定要不管,反对票我,但我有一个不工作的选项卡控制器,这是我必须做的就是它的工作。 此页面上的其他答案都不帮我。 我想使用厦门国际银行/故事板是相当罕见的,这些天(我认为这是从的iOS 5天),但离开这里,做和失足掉进这种情况的人。



文章来源: tabBar didSelectItem seems not to be working