我正在与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中完成这个。
如果有人可能遇到同样的问题,或者您有不同的方法,请分享。
你可以使用UITabBarController
的Inheritence创建新的控制器,并在UITabBar
- > UITabBarItem
上添加一个自定义按钮,因此UITabBarItem
发送到后面,你的自定义按钮显示在前面。您可以使用此自定义按钮设置任何特定操作。否则,iOS SDK不允许为UITabBarItem
提供特定操作。