iOS切换选项卡的子视图控制器

时间:2015-02-25 05:59:23

标签: ios objective-c uitabbarcontroller

有没有办法以编程方式切换某个标签的视图?例如,假设我有一个带有3个标签的标签栏。第3个选项卡包含登录/注册流程,完成后,帐户屏幕应显示在同一个第3个选项卡中。

有些事情:

if (authenticated) {
    // Set TabBarController tab 3 view to AccountController
} else {
    // Set TabBarController tab 3 view to LoginController
}

2 个答案:

答案 0 :(得分:1)

您可以使用UITabBarController method

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

使用如下默认行为:

  

在运行时分配一组新的视图控制器时,选项卡栏控制器会在安装新视图控制器之前删除所有旧视图控制器。更改视图控制器时,选项卡栏控制器会记住先前选择的视图控制器对象并尝试重新选择它。如果所选视图控制器不再存在,它将尝试在阵列中与前一个选择相同的索引处选择视图控制器。如果该索引无效,则选择索引为0的视图控制器。

另外,UITabBarController有

@property(nonatomic, copy) NSArray *viewControllers

具有相同的行为,但默认情况下没有动画。

在任何情况下,您都应该重新创建所有ViewController的层次结构。并且不要忘记UITabBarController会记住之前选择的视图控制器对象,并尝试重新选择它或回退到0索引。

答案 1 :(得分:0)

您可以在选项卡中使用UINavigationController,然后在注册完成后,只需在其中推送一个新的viewController。