因此,在我的应用中,我使用的是故事板,最初的viewController
是UITabBarController
。我想要做的是当应用程序启动时,我希望能够设置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
任何帮助都会被批准。 提前谢谢。
答案 0 :(得分: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修改它并释放阵列。这很有趣!希望能帮助到你!干杯!