2

我有一个带有 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
}
4

1 回答 1

6

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

于 2014-07-09T07:21:47.263 回答