Segue设为Push却以模态方式呈现,请问问题原因?
解决Push Segue以模态方式展示的问题
以下是几个常见的排查和解决方法:
确认源控制器已嵌入导航控制器
Push segue的生效前提是源控制器处于UINavigationController的导航栈中。如果你的源控制器没有被导航控制器包裹,系统会自动将Push segue降级为模态展示。解决方法是:在Storyboard中选中源控制器,右键选择「Embed In」→「Navigation Controller」。检查Segue的类型设置
即使你以为选了Push,也可能在关联时误操作。重新检查Segue的属性:- 在Storyboard中点击对应的Segue线条
- 在右侧Attributes Inspector中,确认「Segue Type」是Push,而不是「Present Modally」或其他类型
验证目标控制器的Presentation属性
选中目标控制器,在右侧Attributes Inspector的「Presentation」选项中,确保设置为Automatic(默认值)。如果设置为「Full Screen」等其他选项,也可能导致展示异常。检查代码中是否有Segue行为的修改
如果你重写了prepare(for segue: UIStoryboardSegue, sender: Any?)方法,确认没有在其中修改Segue的展示方式,比如手动设置目标控制器的modalPresentationStyle。
附你提供的按钮点击代码:
@IBAction func heyoTapped(_ sender: UIButton) { performSegue(withIdentifier: "goToFriendList", sender: nil) }
内容的提问来源于stack exchange,提问作者Tomi Antoljak
相关产品推荐
相关产品推荐

