iOS8 UISplitViewController:如何在压缩宽度窗口中切换到主视图?

iOS8 UISplitViewController:如何在压缩宽度窗口中切换到主视图?,ios8,uisplitviewcontroller,size-classes,popviewcontrolleranimated,Ios8,Uisplitviewcontroller,Size Classes,Popviewcontrolleranimated,我的根视图控制器是一个UISplitViewController,它有一个UITableViewController作为主视图控制器。在iPhone(紧凑型宽度)上,它看起来像一个UINavigationController 轻触单元格以显示局部视图控制器 点击垃圾箱按钮将删除当前便笺。我的问题是,之后如何返回主视图?由于它是一个UISplitViewController,因此无法像UINavigationController那样弹出当前视图控制器。我遇到了类似的问题,最终找到了解决方案。据

我的根视图控制器是一个UISplitViewController,它有一个UITableViewController作为主视图控制器。在iPhone(紧凑型宽度)上,它看起来像一个UINavigationController

轻触单元格以显示局部视图控制器


点击垃圾箱按钮将删除当前便笺。我的问题是,之后如何返回主视图?由于它是一个UISplitViewController,因此无法像UINavigationController那样弹出当前视图控制器。

我遇到了类似的问题,最终找到了解决方案。据我所知,当处于紧凑宽度时,细节导航控制器将成为主导航控制器的视图控制器。所以你所要做的就是:

  • 通过检查拆分视图控制器的折叠属性,确定是否只存在一个视图。如果它没有折叠(例如在iPad上),则除了显示细节视图外,您还显示了表格视图

  • 如果它被折叠(例如在iPhone上),则通过详细导航控制器获取对主导航控制器的引用,并将其弹出到其根视图控制器,在本例中,根视图控制器是您的表视图控制器

  • 这是我在详细视图控制器中使用的代码。在您的情况下,我认为您只需要将以下代码添加到详细视图控制器中的按钮操作:

    if splitViewController!.collapsed {
        let detailNavController = parentViewController as UINavigationController!
        let masterNavController = detailNavController.parentViewController as UINavigationController!
        masterNavController.popToRootViewControllerAnimated(true)
    }
    
    祝你好运