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’表达”
任何人都知道我应该怎么做呢?
答
感谢您的工作。我想你必须先知道你的比较反对什么。
对于阅读此代码的人提供的工作方式,但是您需要注意,示例中的文本“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]) {
// ...
}
它会删除该警告。
我刚刚尝试过这一切,并以完全相同的错误结束!谢谢! – LouwHopley 2011-06-18 10:01:46