我有一个带有三个标签的基于tabbar的应用程序。现在,当设备从纵向旋转到横向时,它应该加载不同的UIViewController,当应用程序模式从横向更改为纵向模式时,应再次显示tabbar控制器。怎么办呢?
答案 0 :(得分:0)
我想您可以使用以下方法按如下方式解决问题。由于您有两个不同的ViewControllers,它们位于同一层级,因此有一个ViewController是有意义的,它管理这两个ViewControllers并显示相应的ViewController,具体取决于方向。
肖像
MyRootViewController
(UIViewController
子类)
MyTabBarViewController
(UITabBarViewController
子类)风景
MyRootViewController
(UIViewController
子类)
MyPortraitViewController
(UIViewController
子类)现在,您的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;
我希望这会有所帮助