如何从UIViewController调用tabbarviewcontroller?

时间:2011-12-19 08:01:05

标签: iphone objective-c ios

我有一个带有三个标签的基于tabbar的应用程序。现在,当设备从纵向旋转到横向时,它应该加载不同的UIViewController,当应用程序模式从横向更改为纵向模式时,应再次显示tabbar控制器。怎么办呢?

1 个答案:

答案 0 :(得分:0)

我想您可以使用以下方法按如下方式解决问题。由于您有两个不同的ViewControllers,它们位于同一层级,因此有一个ViewController是有意义的,它管理这两个ViewControllers并显示相应的ViewController,具体取决于方向。

肖像

  • 窗口
    • MyRootViewControllerUIViewController子类)
      • MyTabBarViewControllerUITabBarViewController子类)

风景

  • 窗口
    • MyRootViewControllerUIViewController子类)
      • MyPortraitViewControllerUIViewController子类)

现在,您的MyRootViewController类检测到任何轮播(请参阅UIViewController文档),并将其视图更改为两个ViewControllers之一:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{

    // Set the view to the corresponding ViewController (Assuming they were already initialized)
    if(UIInterfaceOrientationIsPortrait(toInterfaceOrientation)){
        self.view = self.myTabBarViewController.view;
    } else {
        self.view = self.myPortraitViewController.view;
    }
}

您还应该确保在启动/重新激活您的应用时显示正确的ViewController。为此,您可以在MyRootViewController类中使用以下方法:

- (void)viewWillAppear:(BOOL)animated;

我希望这会有所帮助