我的appDelegate中有一个UITabBarController,但我需要一种方法来了解用户何时按下不同的标签栏项目(标签栏上的按钮)。
-UITabBarDelegate救援协议(使用所需的didSelectViewController方法)!
在Interface Builder中连接所有内容后,如何获取对应于此按钮的标签栏项的实际UIViewController子类实例的引用?
我需要这个引用,因为每次按下标签栏项时我都需要在我的一个UIViewControllers子类中调用一个方法。
有什么建议吗?
- (void)tabBarController:(UITabBarController *)theTabBarController didSelectViewController:(UIViewController *)viewController
{
NSLog(@"%@", [[self.tabBarController selectedViewController] nibName]); // nil, no success here
if ([theTabBarController selectedIndex] == 1) {
MySecondViewController *reference = (MySecondViewController *) viewController;
if ([reference isKindOfClass:[UINavigationController class]]) {
NSLog(@"OMG. It's a UINavigationController class??!"); // kicks in for some reason, shouldn't reference be a MySecondViewController
}
}
答案 0 :(得分:0)
可能我没有正确理解你的问题,但似乎你要求的只是“viewController”参数,它被传递给你提到的方法调用
- (void)tabBarController:(UITabBarController *)theTabBarController didSelectViewController:(UIViewController *)viewController
UITabBarController还有一个属性来获取相同的信息
@property(nonatomic, assign) UIViewController *selectedViewController