iOS segue几种界面跳转笔记 (更新中)

为了简单演示,我直接创建一个新的工程jumpToViewControllerMultipleWay

应用场景
当我们在界面A点击UIView(UIButton按钮、UIImageView图片、UITextView、甚至是UITableView中的Item等等),需要跳转到另外一个界面B或C时。

Segue说明(类型Android的Intent,又不一样)

segue:用于storyboard中不同视图控制器间转场,即从一个视图控制器转场到另一个视图控制器。Segue的起点必须是一个view或者定义某些操作的对象,如:UIBarButtonItem;可以单独在scene之间使用,也可以配合NavigationController的导航栈一起使用 segue

Action Segue 类型

iOS segue几种界面跳转笔记 (更新中)_第1张图片
ActionSequeTypes.png

Action 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后面需要用到
iOS segue几种界面跳转笔记 (更新中)_第2张图片
settingSequeIdentifier.png
  • 步骤3:为按钮设置点击事件
iOS segue几种界面跳转笔记 (更新中)_第3张图片
drawSeeGirlTapped.png

顺带展示一下绑定事件界面Connection说明:

  • Outlet:以定义变量的方式将控件链接到代码,该变量代表控件;
  • Aciton:以定义方法的方式将控件链接到代码,该方法在用户与控件进行交互时运行;
    -Outlet Collection:可以将界面上一组相同的控件连接到同一个数组中
    顺带展示一下绑定事件界面Type说明:
  • Strong:强引用
  • Weak:弱引用
iOS segue几种界面跳转笔记 (更新中)_第4张图片
drawSeeGirlTapped_connections.png
iOS segue几种界面跳转笔记 (更新中)_第5张图片
drawSeeGirlTapped_types.png
  • 步骤4:添加逻辑代码
    自动生成的方法中添加如下代码
        performSegue(withIdentifier: "seeGirl", sender: nil)

iOS segue几种界面跳转笔记 (更新中)_第6张图片
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类绑定

iOS segue几种界面跳转笔记 (更新中)_第7张图片
bindView2ShowGirlViewController.png

分享是一种美德,牵手是一种生活方式。

最后感谢提供的分享平台,你觉得有用可以收藏方便以后查阅。

个人分享内容分类

今日头条号--牵手生活 :android 破解与逆向(暂未接触ios逆向)

csdn--牵手生活 :android 入门级介绍、部分工具类分享。

--牵手生活 :侧重打造-ios乐园

你可能感兴趣的:(iOS segue几种界面跳转笔记 (更新中))