不能使用TabBar委托方法
我有自定义TabBar控制器类的应用程序。
我试图实现tabbar控制器委托方法:
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { NSLog(@"%i",tabBarController.selectedIndex); }
但它不起作用。 为什么?
在ViewDidLoad
我写道:
self.tabBarController.delegate = self;
并在.hi实现:
@interface BaseViewController : UITabBarController
在自定义TabBarController中,请勿使用
self.tabBarController.delegate = self;
但是用
self.delegate = self;
.tabBarController返回视图控制器层次结构中最近的祖先,它是一个标签栏控制器,但您的自定义TabBarController是您要定位的控制器,因此无需在其层次结构中进行搜索
你说过,这是你的自定义TabBarController。 你做的定制是什么? 如果您更改了TabBar面板并将其替换为您自己使用的面板
setSelectedIndex: setSelectedViewController:
手动方法,然后你也应该手动调用委托的方法。
根据Apple的文档 :
标签栏上可以发生两种类型的用户启动的更改:
- 用户可以选择选项卡。
- 用户可以重新排列选项卡。
两种类型的更改都会报告给选项卡栏控制器的委托,该委托是符合UITabBarControllerDelegate协议的对象。
另请检查UITabBarControllerDelegate协议参考
在iOS v3.0及更高版本中,无论>所选视图控制器是否更改,选项卡栏控制器都会调用此方法。 此外,仅在响应用户点击标签栏时调用它,并且当您的代码以编程方式更改标签栏内容时不会调用它。
仅当用户与其UITabBar控件交互时,Delegate才会响应。