Iphone 更改tabBarController.selectedViewController只能工作一次?

Iphone 更改tabBarController.selectedViewController只能工作一次?,iphone,objective-c,uiviewcontroller,uitabbarcontroller,Iphone,Objective C,Uiviewcontroller,Uitabbarcontroller,我的iPhone应用程序使用UITabBarController。在第一个选项卡上,有一个场景,用户可以在不更改选项卡的情况下深入两个UIViewController。因此,屏幕流程如下所示: 应用程序加载时默认打开第一个选项卡 用户按下一个UIView按钮,将他们带到同一选项卡中的第二个UIViewController 从第二个UIViewController,用户可以按另一个UIView按钮,将它们带到第三个UIViewController,仍然在同一选项卡中 当使用以下两行从第一个UIVi

我的iPhone应用程序使用UITabBarController。在第一个选项卡上,有一个场景,用户可以在不更改选项卡的情况下深入两个UIViewController。因此,屏幕流程如下所示:

  • 应用程序加载时默认打开第一个选项卡
  • 用户按下一个UIView按钮,将他们带到同一选项卡中的第二个UIViewController
  • 从第二个UIViewController,用户可以按另一个UIView按钮,将它们带到第三个UIViewController,仍然在同一选项卡中
  • 当使用以下两行从第一个UIViewController切换到第二个UIViewController时,此操作有效:

        2ndViewController = [[SecondViewController alloc] init];
        self.tabBarController.selectedViewController = 2ndViewController;
    
    但是,当我尝试从第二个UIViewController到第三个UIViewController执行相同操作时,它不起作用。这个按钮什么都不做,我一直在第二个UIViewController上

    有人能解释这是为什么吗?是否有一种变通方法可以使用?如果需要,我很乐意提供更多的代码


    提前谢谢。

    这不是那家酒店的用意。您很可能正在经历文档中提到的“未定义的行为”


    执行此操作的最佳方法是在选项卡中放置一个
    UINavigationController
    ,然后用它推送每个控制器。如果不想显示导航栏,可以使用
    navigationBarHidden

    将其隐藏,这不是该属性的用途。您很可能正在经历文档中提到的“未定义的行为”


    执行此操作的最佳方法是在选项卡中放置一个
    UINavigationController
    ,然后用它推送每个控制器。如果不想显示导航栏,可以使用
    navigationBarHidden

    隐藏导航栏。是否尝试使用“selectedIndex”属性?如果我没有弄错,则“selectedIndex”属性会更改当前选择的选项卡。tabBarController.selectedIndex=0将您置于第一个选项卡上,tabBarController.selectedIndex=1将您置于第二个选项卡上,以此类推。更改UIViewController时,我希望保持在同一选项卡上。您是否尝试使用“selectedIndex”属性?如果我没有弄错,“selectedIndex”属性将更改当前选择的选项卡。tabBarController.selectedIndex=0将您置于第一个选项卡上,tabBarController.selectedIndex=1将您置于第二个选项卡上,以此类推。更改UIViewController时,我希望保持在同一选项卡上。