Unwind Segue 与普通的 Segue的不同之处在于:
1.普通Segue,用的是源ViewController的prepare函数,代码是写在源ViewController里的,在源ViewController里对目标ViewController的相关属性进行操作。而Unwind Segue的代码是写在目标ViewController里的。在目标ViewController里,通过
@IBAction func unwindToMainMenu(sender: UIStoryboardSegue)函数接收源ViewController对象。
2.普通的 Segue会创建一个新的目标ViewController实例,在源ViewController里对目标ViewController配置好后,再过渡到目标实例。也就是说用Segue链接的目标ViewController在跳转之前是可以还没实例化的。而Unwind Segue的目标ViewController必须是已经实例化了的,否则跳转将无效。
3.因为普通Segue是采取实例化目标ViewController,并向其过渡,所以只能在相邻的ViewController之间跳转,而Unwind Segue则可以在Unwind Segue发起端跳到任何已经实例化了的ViewController上去,只要将Unwind Segue与目标ViewController上写的
@IBAction func unwindToMainMenu(sender: UIStoryboardSegue)函数绑定。所以Unwind Segue是可以跨多个ViewController进行跳转的,并且目标ViewController可以是压在导航栈里的任何ViewController。