首页 > 解决方案 > iOS:从 UISplitViewController 推送新的 ViewController

问题描述

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

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

在此处输入图像描述

有没有办法轻松做到这一点或这个?

标签: iosswiftipaduinavigationcontrolleruisplitviewcontroller

解决方案


您应该将拆分控制器添加到另一个导航控制器中(如果您使用情节提要,请将其视为新的初始控制器)。然后当你处理按钮的触摸动作时,像这样推动你不同的视图控制器:

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)
  } 
}

这应该就是你所需要的。


推荐阅读