如何创建自定义Segue?解决UIViewController以Pop Over弹出而非切换屏幕问题
解决视图控制器以Pop Over弹出而非全屏切换的问题
方法一:利用导航控制器Push切换
如果你的视图控制器处于UINavigationController栈中管理,直接用push方法实现屏幕切换:
@IBAction func buttonTapped(_ sender: UIButton) { let targetVC = YourTargetViewController() // 替换为你的目标视图控制器类 navigationController?.pushViewController(targetVC, animated: true) }
方法二:全屏Present视图控制器
如果没有导航控制器,通过present方式强制全屏展示:
@IBAction func buttonTapped(_ sender: UIButton) { let targetVC = YourTargetViewController() // 设置全屏模态样式 targetVC.modalPresentationStyle = .fullScreen present(targetVC, animated: true) }
排查Pop Over出现的原因
- 若用Storyboard配置Segue:检查按钮关联的Segue样式是否为
Present As Popover,改成Show(Push)或者Present Modally(并在Segue属性里将Presentation设为Full Screen) - 若用代码配置弹出:确认是否误设置了
popoverPresentationController的sourceView、sourceRect等属性,这些是Pop Over的专属配置,移除后即可正常全屏切换
内容的提问来源于stack exchange,提问作者Kaleb Zimmerman
相关产品推荐
相关产品推荐

