iOS:从UISplitViewController推送新的ViewController

iOS:从UISplitViewController推送新的ViewController,ios,swift,ipad,uinavigationcontroller,uisplitviewcontroller,Ios,Swift,Ipad,Uinavigationcontroller,Uisplitviewcontroller,我尝试了一些我在这里找到的解决方案,但运气不太好 为了简短起见,我想做以下操作:从DetailView按钮按一个全新的ViewController(全屏),并选择使用导航返回按钮返回 有没有一种方法可以轻松地执行此操作?您应该将拆分控制器添加到另一个导航控制器中(如果您使用的是故事板,请将其视为新的初始控制器)。然后,当您处理按钮的触摸操作时,按下不同的视图控制器,如下所示: let viewController = UIStoryboard.init(name: "Main&quo

我尝试了一些我在这里找到的解决方案,但运气不太好

为了简短起见,我想做以下操作:从DetailView按钮按一个全新的ViewController(全屏),并选择使用导航返回按钮返回


有没有一种方法可以轻松地执行此操作?

您应该将拆分控制器添加到另一个导航控制器中(如果您使用的是故事板,请将其视为新的初始控制器)。然后,当您处理按钮的触摸操作时,按下不同的视图控制器,如下所示:

let viewController = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "DiffViewController")
self.splitViewController?.navigationController?.pushViewController(viewController, animated: true)
将拆分控制器嵌套到导航中将在屏幕顶部显示一个额外的导航栏。因此,要隐藏它,请将拆分控制器子类化,并添加以下代码:

final class YourSpllitViewController: UISplitViewController {
  override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.setNavigationBarHidden(true, animated: false)
  }
}
然后让不同的控制器执行以下操作:

final class DiffViewController: UIViewController {

  override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.setNavigationBarHidden(false, animated: false)
  } 
}
这就是你所需要的