如何在 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
:
当我尝试通过故事板创建 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
: