如何在 Xcode 11.1 中创建使视图控制器全屏显示的 Segue

How to create Segue which make view controller fullscreen in Xcode 11.1

当我尝试通过故事板创建 segue 时,它​​只会打开新的视图控制器作为弹出窗口而不是全屏。我尝试将 segue 的类型从 ,Show (e.g. Push)" 更改为其他类型,但后来我得到 "Thread 1: signal SIGABRT"

您需要做的是通过 prepareForSegue:sender::

将目标视图控制器的 modalPresentationStyle 设置为 fullscreen
class FirstViewController: UIViewController {

    ...

    @IBAction func segueButtonPressed(_ sender: Any) {
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

        super.prepare(for: segue, sender: sender)

        if let secondViewController = segue.destination as? SecondViewController {
            secondViewController.modalPresentationStyle = .fullScreen
        }
    }
}

prepareForSegue:sender: 在从 UIViewController 执行 segue 之前被调用。 iOS 13+ 中默认的 modalPresentationStyle.pageSheet,这是 不会 覆盖整个屏幕的显示(尽管它允许更多自然 navigation/dismissal 通过向下滑动视图控制器并离开屏幕)。我们需要在执行 segue 之前将此 modalPresentationStyle 更改为 .fullScreen

您需要 select present modally segue type 然后 select 正下方的演示文稿样式 full screen: