UITabBarControllerDelegate - 没有为委托触发的方法?

时间:2013-03-08 20:08:43

标签: ios

我有一个带有4个标签的tabbarcontroller。当用户选择其中一个选项卡时,我想为新视图控制器进行一些设置 - 即... [newVC.databaseid = self.datbaseid];

我为tabviewcontroller设置了控制器,因为它是viewdidload中的委托。但是我试图使用3种方法,但似乎只有一种方法可以解雇。

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

开火,

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

- 似乎没有开火。这是我需要用来设置我新呈现的VC的那个。

只是看看会发生什么,我尝试使用      - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController

并且似乎也没有触发(我返回NO并且它没有任何区别,也没有任何记录与NSLog();

如果这些方法中没有一个被解雇我认为我设置了委托错了,但是有一种方法可以触发,但有两种方法没有。任何想法?

我已经使用故事板设置了tabbarcontroller。

-(void) tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
    NSLog(@"item selected");
    //THIS DOES GET LOGGED
}

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    NSLog(@"new VC");
    //this does not get logged
}

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
     return NO;
    //this doesnt stop any views being presented
}

1 个答案:

答案 0 :(得分:6)

我找到了我的问题 - 我是我的错。我做了一些愚蠢的事。我在类中设置了self.tabbarcontroller.delegate = self的委托,该类是tabbarcontroller的控制器,将其更改为self.delegate = self;已经解决了这个问题。这是一个愚蠢的错误!奇怪的是第一种方法实际上是如何工作的,但是嘿!