UITabBarControllerDelegate比较viewController的值

时间:2010-05-01 23:27:39

标签: iphone uiviewcontroller

我有一个带有4个标签的tabBar,我想在选择特定标签时执行一些操作,所以我在xxAppDelegate.m中取消注释了UITabBarControllerDelegate

我还希望在控制台中看到正在发送的值 - 以便测试我的“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之前的预期表达式”

任何人都知道我应该这样做吗?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

谢谢你的工作。我想你必须知道你的比较首先是什么对象。

对于阅读此代码的任何人来说,提供的代码都有效,但是您需要注意示例中的文本“tabBarController”是指实例变量(全局代码)。

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

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

希望这有助于某人面对

Local declaration of 'tabBarController' hides instance variable 
尝试实施时出现

警告。

答案 2 :(得分:-1)

比较tabbarcontroller使用self时,如下所示:

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

它将删除警告。