我们如何更改活动tabbarcontroller的viewcontrollers?

时间:2014-08-07 20:05:48

标签: ios objective-c uiviewcontroller uitabbarcontroller

在我们的app委托中,我们将标签栏控制器设置为根视图。初始化时,此选项卡栏通过使用setViewControllers填充了一堆选项卡,但没有任何选项卡显示,并且在记录时,确实[viewControllers count]返回0.是否有某种方法迫使tabbarcontroller更改其viewcontrollers?< / p>

编辑:添加代码

在标签栏控制器m文件中:

- (id)init
{
    self = [super init];
    if (self) {
        FooViewController *fooViewController = [[FooViewController alloc] init];
        UINavigationController *fooNavigationController = [[UINavigationController alloc] initWithRootViewController:fooViewController];

        BarViewController *barViewController = [[BarViewController alloc] init];
        UINavigationController *barNavigationController = [[UINavigationController alloc] initWithRootViewController:barViewController];
        [self.tabBarController setViewControllers: @[fooNavigationController, barNavigationController] animated: NO];
    }
    NSLog(@"%d",[self.tabBarController.viewControllers count]);
    return self;
}

App代表:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    CustomTabBarController *tabController = [[CustomTabBarController alloc] init];

    self.window.rootViewController = tabController;


    return YES;
}

2 个答案:

答案 0 :(得分:0)

您必须设置标签栏控制器的根视图控制器

- (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated
  

viewControllers

     

要在其中显示的自定义视图控制器数组   标签栏界面。此数组中视图控制器的顺序   对应于标签栏中与控制器的显示顺序   在索引0表示最左边的选项卡,控制器在索引1处   右边的下一个标签,依此类推。

在运行时分配一组新的视图控制器时,选项卡栏控制器会在安装新视图控制器之前删除所有旧视图控制器。

答案 1 :(得分:0)

我明白了。由于我们的类继承自UITabBarController,我们只需调用self setViewControllers而不是self.tabBarController setViewControllers。