以编程方式将UITabBarItem添加到UITabBar,并为其设置操作

时间:2013-09-08 13:45:56

标签: iphone ios uitabbar

我正在使用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中完成这项工作。

如果有人可能遇到同样的问题,或者您有不同的方法,请分享。

1 个答案:

答案 0 :(得分:1)

您可以使用UITabBarController中的“继承”创建新控制器,并在UITabBar上添加自定义按钮 - &gt; UITabBarItem因此UITabBarItem发送回来,您的自定义按钮显示在前面。您可以使用此自定义按钮设置任何特定操作。否则,iOS SDK不允许为UITabBarItem提供特定操作。