iOS关于转场

一: 普通的转场(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


iOS关于转场_第1张图片
屏幕快照 2016-03-22 13.24.03.png
iOS关于转场_第2张图片
屏幕快照 2016-03-22 13.24.14.png

1.先在collection view controller里加一个unwindsegue方法,方法名随便起。

 @IBAction func unwindToHome(segue: UIStoryboardSegue) {
//此方法可用于传值(反向转场的controller传值到这里)    
}

2.在storyboard 里将done连到exit。(这一步已经完成了反向转场)


iOS关于转场_第3张图片
屏幕快照 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)
    

效果如图:
iOS关于转场_第4张图片
屏幕快照 2015-12-31 17.28.46.png

你可能感兴趣的:(iOS关于转场)