在主从视图和其他视图控制器之间切换?

Posted

技术标签:

【中文标题】在主从视图和其他视图控制器之间切换?【英文标题】:Switch between Master-Detail View and other view controllers on rotation? 【发布时间】:2013-03-27 00:38:04 【问题描述】:

我现在正在为 Ipad 测试一个应用程序。基本上我正在使用模板进行主详细信息应用程序并有另一个 PortraitViewController。现在,当应用程序以纵向模式启动时,我希望它仅显示 PortraitViewController,而当设备旋转时,例如横向模式,我希望仅显示 master-detailViewController。最好的方法是什么。

我正在测试单视图应用程序的示例代码,但主从视图拒绝隐藏:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)
interfaceOrientation duration:(NSTimeInterval)duration 
    if (interfaceOrientation == UIInterfaceOrientationPortrait) 
        self.view = self.portrait;
        self.view.transform = CGAffineTransformIdentity;
        self.view.transform =
        CGAffineTransformMakeRotation(degreesToRadians(0));
        self.view.bounds = CGRectMake(0.0, 0.0, 320.0, 460.0);
    
    else if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft) 
        self.view = self.landscape;
        self.view.transform = CGAffineTransformIdentity;
        self.view.transform =
        CGAffineTransformMakeRotation(degreesToRadians(−90));
        self.view.bounds = CGRectMake(0.0, 0.0, 480.0, 300.0);
    
    else if (interfaceOrientation ==
             UIInterfaceOrientationLandscapeRight) 
        self.view = self.landscape;
        self.view.transform = CGAffineTransformIdentity;
        self.view.transform =
        CGAffineTransformMakeRotation(degreesToRadians(90));
        self.view.bounds = CGRectMake(0.0, 0.0, 480.0, 300.0);
  

【问题讨论】:

【参考方案1】:

视图控制器不应该像这样实时更改其视图。您没有看到任何事情发生,因为视图控制器的旧视图仍在界面中;您不会将其从界面中删除。你也不应该这样做。实现这一点的方法是更换 视图控制器;使用不同的视图控制器和不同的视图。

您从主从视图控制器开始,因此应用程序的根视图控制器是 UISplitViewController。它的视图(拆分视图),它出现,是您要删除的视图。所以你必须将 UISplitViewController 替换为窗口的rootViewController

但这是一个巨大的痛苦。我认为在纵向放置时,将模态(呈现的)视图控制器放在所有东西的前面可能会更快乐。

这是一个可下载的示例项目,它展示了一个响应设备旋转的视图控制器:

https://github.com/mattneub/Programming-ios-Book-Examples/tree/master/ch19p609rotationForcingModalView

【讨论】:

感谢您的回答。你能推荐任何关于模态视图控制器的教程吗? 你可能想看apeth.com/iOSBook/ch19.html#_presented_view_controller(甚至整章,也许)。

以上是关于在主从视图和其他视图控制器之间切换?的主要内容,如果未能解决你的问题,请参考以下文章

使用分段控制在 ios 中的视图之间切换视图

在“正常”视图和拆分视图控制器之间切换方向更改 IPad

UIPageViewController 在静态视图控制器和保持(重用)内容之间切换

在 iphone 上的 3 个视图控制器之间切换

高效地在视图控制器之间切换

在视图控制器之间切换时自动旋转