1

所以在我的应用程序中,我使用了故事板,首字母viewControllerUITabBarController. 我想要做的是当应用程序启动时,我希望能够设置tabBarController有 3 个或 4 个项目。所以在 中appDel,我计划检查用户应该看到 3 或 4 个选项卡的天气,然后tabBarController应该反映.

我尝试对 进行子类化tabBarController,但它不起作用:

@implementation TabBarController

-(id) init{
    if ((self = [super init])) {
        [[[[self tabBar] items] objectAtIndex:2] setEnabled:YES];
        [[[[self tabBar] items] objectAtIndex:3] setEnabled:NO];
        [[[[self tabBar] items] objectAtIndex:3] setHidden:YES];  
    }
    return self;
}
@end

任何帮助将不胜感激。提前致谢。

4

1 回答 1

4

我认为更简单(可能不是最好)的方法是让 TabBar 控制器不是初始视图控制器并创建两个标签栏控制器。从您的初始视图中,您可以决定使用您将显示的标签栏控制器。您还可以将两个选项卡栏控制器链接到相同的选项卡/视图控制器(在它们之间重复的那些)。

在初始视图控制器中,您添加一些代码以了解您将执行哪个 segue,瞧。

像这样的东西: 在此处输入图像描述

不过,我正在研究一个代码解决方案(似乎很有趣!)。如果我发现任何东西会更新。

编辑:这是编码的解决方案。(我正在使用情节提要,但我相信您可以翻译代码以使用 nib 文件)。

首先要做的是创建故事板的一个实例:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];

然后实例化tabbarcontroller:

UITabBarController *myTab = [storyboard instantiateViewControllerWithIdentifier:@"tabBar"];

然后实例化要添加到标签栏的新视图控制器:

UIViewController *newVC = [storyboard instantiateViewControllerWithIdentifier:@"newView"];

这是有趣的部分,您将所有视图控制器/选项卡放入一个数组中,然后从该数组中添加或删除视图。然后将 tabbarcontroller 的视图控制器设置为修改后的数组(我添加一个 viewController 并删除另一个)。

NSMutableArray* controllers = [myTab.viewControllers mutableCopy];
[controllers insertObject:newVC atIndex:0];
[controllers removeObjectAtIndex:2];
[myTab setViewControllers:controllers];

然后你可以像这样推动你的标签栏控制器:

[self.navigationController pushViewController:myTab animated:YES];

这里我使用的是故事板和 ARC,如果你不使用 ARC,你可以为 nib 修改它并释放数组。这写起来很有趣!希望能帮助到你!干杯!

于 2012-06-15T17:59:33.283 回答