为了简单演示,我直接创建一个新的工程jumpToViewControllerMultipleWay
应用场景
当我们在界面A点击UIView(UIButton按钮、UIImageView图片、UITextView、甚至是UITableView中的Item等等),需要跳转到另外一个界面B或C时。
Segue说明(类型Android的Intent,又不一样)
segue:用于storyboard中不同视图控制器间转场,即从一个视图控制器转场到另一个视图控制器。Segue的起点必须是一个view或者定义某些操作的对象,如:UIBarButtonItem;可以单独在scene之间使用,也可以配合NavigationController的导航栈一起使用 segue
Action Segue 类型
ActionSequeTypes.pngAction Sequie
- show:在NavigationController存在的情况下,segue连接的Controller会被压入导航栈。新压入的视图控制器有返回按钮,单击可以返回
- show Detail:这种类型是不压栈的,不管有没有NavigationController,它只是replace取代了当前的视图,不提供返回按钮。在detail area中展现内容。例如:即使app同时显示master和detail视图,那么内容将被压入detail区域如果app当前仅显示Master或者detail视图,那么内容将替换当前视图控制器堆栈中的顶层视图。
- Present Modally:这种类型是不压栈的,以模态的方式显示,类似于弹出的警告窗口、登陆框一类的视图;用户无法与上一个视图交互,除非关闭当前视图。
- Present As Popover:这种类型不压栈,类似于下拉菜单;在iPad中,目标视图以浮动窗样式呈现,点击目标视图以外区域,目标视图消失;在iPhone中,默认目标视图以模态覆盖整个屏幕。
- Custom:可用于自定义
- Push(从Xcode开始已经不建议使用)
- modal(从Xcode开始已经不建议使用)
官方开发资料:View Controller Programming Guide for iOS---Using Segues
官方功能描述:xcode help
Action Seque -show(Storyboard中segue拖拉)
方式1-控件拖拉到目标ViewController
在Storyboard(国内常称为故事版)右键UIButton直接拖拉即可,拖拉完就可以直接运行
actionSequeShow.gif方式2-原ViewController(界面A)拖拉到目标ViewController(界面B)
-
步骤1:拖拉
试图树中拖拉
actionSequeShow_view2view.gif
或 在Storyboard上拖拉
actionSequeShow_V2V.gif拖拉后直接运行,你会发现根本就没有办法跳转。因为你还没有进行后续的操作,这个时候我们就要用到Identifier
- 步骤2:为segue设置Identifier
当我们拉好线后,点击segue(那条线),并为seque设置Identifier(我设置的是seeGirl)这个id后面需要用到
- 步骤3:为按钮设置点击事件
顺带展示一下绑定事件界面Connection说明:
- Outlet:以定义变量的方式将控件链接到代码,该变量代表控件;
- Aciton:以定义方法的方式将控件链接到代码,该方法在用户与控件进行交互时运行;
-Outlet Collection:可以将界面上一组相同的控件连接到同一个数组中
顺带展示一下绑定事件界面Type说明: - Strong:强引用
- Weak:弱引用
- 步骤4:添加逻辑代码
自动生成的方法中添加如下代码
performSegue(withIdentifier: "seeGirl", sender: nil)
seeGirlTappedCoding.png
方式1、方式2的运行效果一致
actionSequeShow_operationEffect.gif为界面B添加返回按钮,并绑定返回事件
上面的工作已经实现了界面A到界面B的跳转,可惜界面B无法返回到界面A,这个的界面体验感觉总是很别扭。那么下面的工作就是为界面B添加返回事件。
步骤1:在父界面ViewController中添加closeShowGirl方法(你可以试试没有这是步骤会是什么情况)
@IBAction func closeShowGirl(segue:UIStoryboardSegue){
print("关闭")
}
步骤2:为返回按钮与closeShowGirl方法进行绑定
如果没有在父界面添加实现代码,那么你将无法做这个绑定
bindQuitButton2Func.gif运行看一下效果
运行你会发现已经可以实现界面B返回到界面A,并成功在xcode日志窗口中打印处“关闭”
绑定界面B与UIViewController类绑定说明(这步不是必须的,你可以跳过)
上面我们所做的工作并没有为界面B编写任何代码,这是因为系统在我们没有绑定的情况下才用系统内置的UIViewController。
那么我们应该如何绑定呢?其实只要2个步骤就可以完成
-
步骤一:在项目的资源管理位置右键菜单/new/file/Cocoa Touch 类文件-ShowGirlViewController.swift(继承至UIViewController)
-
步骤2:界面B与ShowGirlViewController类绑定
bindView2ShowGirlViewController.png
分享是一种美德,牵手是一种生活方式。
最后感谢简书提供的分享平台,你觉得有用可以收藏方便以后查阅。
个人分享内容分类
今日头条号--牵手生活 :android 破解与逆向(暂未接触ios逆向)
csdn--牵手生活 :android 入门级介绍、部分工具类分享。
简书--牵手生活 :侧重打造-ios乐园
网友评论