技术问询:StoryboardID与StoryboardSegueIdentifier的区别及跳转方式差异
嘿,这两种跳转方式乍一看功能完全一致,但底层逻辑、使用场景和灵活性其实有不小的区别,我给你拆解明白:
基于Segue的跳转(
performSegueWithIdentifier):故事板预设的关联式跳转
这种方式的核心是你已经在故事板里通过拖拽连线(Segue)把mainViewController和detailViewController做了可视化绑定,跳转规则(比如是push导航还是present模态)、转场动画都是在故事板里配置好的。
当你调用performSegueWithIdentifier("toDetailViewController", sender: self)时,系统会自动执行这套预设逻辑,还会触发prepare(for:sender:)方法,让你能在跳转前给目标VC传参——这些都是系统帮你封装好的流程。
它更适合简单、固定的跳转场景,开发时可视化程度高,不用写太多初始化VC的代码。手动实例化VC的跳转(
instantiateViewControllerWithIdentifier):代码主导的自由式跳转
这种方式完全脱离了Segue的绑定,你相当于直接从故事板里“取出”detailViewController的实例,然后完全由代码决定怎么展示它(是push、present,甚至把它加到容器VC里都可以)。
你可以在实例化VC后,自由修改它的属性、传递复杂参数,再执行跳转。这种方式没有故事板里的预设规则限制,灵活性拉满,适合需要动态决策跳转目标(比如根据用户权限跳不同VC)、或者需要对VC做大量自定义配置的场景。
核心差异总结
Segue是**「故事板定义规则,代码仅触发」,属于约定式的可视化开发;手动实例化则是「代码完全掌控实例与跳转逻辑」**,属于灵活的代码驱动开发。前者省心省力,后者适配复杂场景。
内容的提问来源于stack exchange,提问作者Hapeki

