我正在使用iOS 6.1
,我有一个TabBarController
,其中包含两个项目,每个项目都推送到NavigationControllerView
。
如何从任何子控制器向UITabBarItem
添加新TabBarController
,并设置特定操作。
注意:现在我修改了StackOverflows
中提出的几个问题,其中的措辞几乎与此问题相同,但是它们的实现并不像我在这里描述的那样。
iOS
允许这样做吗?如果没有,你会分享你对如何做的想法吗?
注意:经过几天的碰撞后,我尝试了以下方法,它 工作,但我觉得不舒服。
该方法包括一个控制器类
1)让你的一个控制器类继承UITabBarControllerDelegate。在我的例子中,我在类中实现了这个委托,这个委托最有可能在AppDelegate之后第一次被实例化,换句话说就是属于app的第一个视图的Class,例如
interface MainTableViewController: UITableViewController <UITabBarControllerDelegate>
...
2)在viewDidLoad
中设置TabBarController的委托self.tabBarController.delegate = self;
3)实现协议tabBarController:shouldSelectViewController:,使用此方法可以控制将显示哪个视图。
在我的情况下,我之前添加了一些虚拟视图控制器,我给每个BarItem一个不同的标签号
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
switch (viewController.tabBarItem.tag) {
case 3:
{
[self someActionA];
return NO;
}
case 4:
{
[self someActionB];
return NO;
}
default:
return YES;
}
}
到目前为止,这段代码将首先完成我真正想要的技巧,但我希望我能在AppDelegate中完成这项工作。
如果有人可能遇到同样的问题,或者您有不同的方法,请分享。
答案 0 :(得分:1)
您可以使用UITabBarController
中的“继承”创建新控制器,并在UITabBar
上添加自定义按钮 - &gt; UITabBarItem
因此UITabBarItem
发送回来,您的自定义按钮显示在前面。您可以使用此自定义按钮设置任何特定操作。否则,iOS SDK不允许为UITabBarItem
提供特定操作。