通过segue跳转到的界面,都是一个新的实例而不是之前的界面!!!传值的时候尤其要记得,不然会出现明明传值了,但是到对应界面却发现,传过来的值没有了!?
多个场景之间切换样式(kind):
Show(e.g. Push):和Push不同,哪怕不在Navigation下面也可以通过Show跳转过去。但是必须在启用Size Class。
Show Detail(e.g. Replace)
Present Modally
Resend As Popover
Deprecated Segue:
Push:跳转到一个新的视图,可以前后移动,用于导航视图控制器;(必须在NavigationController中使用,不然跳转时会Crash!)
Modal:过渡到另一个场景,用于完成某项任务,完成后关闭并返回;(返回方法一般采用DismissViewController())
Popover
Replace
Segue过渡类型(modalTransitionStyle):
是从一个场景切换到另一个场景时播放的动画。一般用默认的就好了。
Cover Vertical -- 新场景从下向上移动,逐渐覆盖旧场景。
Flip Horizontal -- 视图水平翻转,以显示背面的新场景。
Cross Dissolve -- 旧场景淡出,新场景淡入。
Partial Curl -- 旧场景像书页一样翻开,显示下面的新场景。
Segue显示样式(modalPresentationStyle):
它决定了模态视图在屏幕上的显示方式,(只在iPad应用程序中)
Form Sheet(表单) -- 将场景调整到比屏幕小(不管朝向),并在当前场景后面显示原始场景,这几乎相当于在一个iPad窗口中显示。
Page Sheet(页面) -- 调整场景大小,使其以纵向格式显示。
Full Screen(全屏) -- 调整场景大小,使其覆盖整个屏幕。
Current Context(当前上下文) -- 以原始场景的显示方式展示场景。
Segue跳转方式:
跳转到一个新的界面实例:
1、在StoryBoard中拖动连接到对应的controller中即可;
2、在Action的事件中添加preformSegueWithIdentifier();
3、静态代码跳转:
@IBActionfuncback(sender:UIButton) {
//1、获取Main StoryBoard;
let mainStoryBoard =UIStoryboard.init(name:"Main", bundle:nil)
//2、获取目标Controller的identifier
let newViewController = mainStoryBoard.instantiateViewControllerWithIdentifier("view1") as! ViewController
//3、设置跳转样式;
newViewController.modalTransitionStyle=UIModalTransitionStyle.CoverVertical
//4、设置显示样式;
newViewController.modalPresentationStyle=UIModalPresentationStyle.FullScreen
//5、跳转并显示目标Controller
self.presentViewController(newViewController, animated:true) {
print("ok")
}
}
返回之前的界面
1)通过Segue,但是要在对应的view中申明unwind方法(该方法名可以随意,但是方法前一定要申明 @IBAction,方法的第一个参数类型必须是UIStoryBoardSegue),然后在StoryBoard中将Segue连接到对应view的Exit中的unwind方法上;
2)通过dismissViewControllerAnimated()关闭当前界面而回到上一界面;(仅适用于Modal样式)
3)通过self.navigationController?.popToViewController(viewController: UIViewController, animated:Bool),使用的是压栈的形式,后进先出,比如,navigationController中经过了5个View,也就是navigationControllers队列中有5个实例对象[0、1、2、3、4],当从第四个view回退至第2个界面,直接通过pop方法,navigationController.viewControllers[1]即可。但是如之前说是压栈的形式,所以后面的2、3、4的界面对象将消失,再次跳转过去,会生成新的实例对象。
更新中……
网友评论