一: 普通的转场(ctl-drag)
1.选中跳转的segue,然后给它一个identifier。
然后在需要跳转的地方用:
self.performSegueWithIdentifier("identifier", sender: self)。
二:跳转到指定页面(没有ctl-drag)
假如我从某个页面要跳到个人页面“PersonalController”,先在main.storyboard给“PersonalController”一个storyboard ID叫"confirmToPersonal",
然后在当前页面定义一个controller作为终点controller,
let personalController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("confirmToPersonal")
接着在这个页面需要跳转的地方写上一句:
self.navigationController?.pushViewController(self.personalController, animated: true)
完成跳转(无需连线)。
三:反向转场:unwind segue
反向转场用于让view controller退场(dismiss),此方法只有一个参数:segue:UIStoryboardSegue。
如图,点击done后,回到collection view页面
collection view controller
屏幕快照 2016-03-22 13.24.03.png
屏幕快照 2016-03-22 13.24.14.png
1.先在collection view controller里加一个unwindsegue方法,方法名随便起。
@IBAction func unwindToHome(segue: UIStoryboardSegue) {
//此方法可用于传值(反向转场的controller传值到这里)
}
2.在storyboard 里将done连到exit。(这一步已经完成了反向转场)
屏幕快照 2016-03-22 13.39.55.png
3.从 collection view controller里跳转到图片的controller。
let destinationViewController = segue.destinationViewController as! UINavigationController
let photoViewController = destinationViewController.viewControllers[0] as! PhotoViewController
collectionView?.deselectItemAtIndexPath(indexPaths[0], animated: false)
ps: [正向转场]用segue.destinationViewController;[反向转场]用segue.sourceViewController。
四:从一个页面push到“登陆页面”,在登陆页面按“取消登陆”按钮,pop回原页面
//取消登陆
@IBAction func cancelLogin(sender: AnyObject) {
self.navigationController?.popViewControllerAnimated(true)
}
//题外话:如果登陆成功了,可以回到任何一个页面
//self.navigationController?.pushViewController(self.personalController, animated: true)
效果如图:屏幕快照 2015-12-31 17.28.46.png