UITabBarControllerDelegate比较的viewController

问题描述:

的价值我一张有4个选项卡一个TabBar,所以我想在选择一个特定的标签来执行一些动作,所以我在xxAppDelegate.m注释掉的UITabBarControllerDelegateUITabBarControllerDelegate比较的viewController

我也想查看控制台中记录的发送值 - 以测试我的“if”语句。然而,这是我陷入困境的地方。

// Optional UITabBarControllerDelegate method 
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { 

    NSLog(@"%@", viewController); 
} 

控制台登录尽职尽责已经被选择,任何选择的控制器,但在这个特定的格式:

<MyViewController: 0x3b12950> 

现在,我没想到的方括号或结肠或十六进制。所以我的问题是如何格式化我的IF语句?这是我认为会工作,但我得到进一步提及的错误。

// Optional UITabBarControllerDelegate method 
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { 

    NSLog(@"%@", viewController); 
    if (viewController == MyViewController) 
    { 
    //do something nice here … 
    }; 
} 

...错误是“之前的预期‘MyViewController’表达”

任何人都知道我应该怎么做呢?

+0

我刚刚尝试过这一切,并以完全相同的错误结束!谢谢! – LouwHopley 2011-06-18 10:01:46

感谢您的工作。我想你必须先知道你的比较反对什么。

对于阅读此代码的人提供的工作方式,但是您需要注意,示例中的文本“tabBarController”引用了实例变量(全局变量)。

为了让你的代码工作,你的视图控制器需要引用一个唯一命名的本地版本,如下所示。将此与我的原始代码进行比较。

// Optional UITabBarControllerDelegate method 
- (void)tabBarController:(UITabBarController *)tabBarController_local didSelectViewController:(UIViewController *)viewController 
{ 
//... 
} 

希望这有助于试图实现当有人面对

Local declaration of 'tabBarController' hides instance variable 

警告。

您需要与特定视图控制器实例进行比较。例如,如果在选择第二个选项卡时if语句应该为true:

if (viewController == [tabBarController.viewControllers objectAtIndex:1]) { 
    // ... 
} 

当比较tabbarcontroller使用自我,就像这样:

if (viewController == [self.tabBarController.viewControllers objectAtIndex:1]) { 
    // ... 
} 

它会删除该警告。