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

作者: 牵手生活 | 来源:发表于2017-09-23 00:35 被阅读1180次

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

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

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

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

    Action Segue 类型

    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后面需要用到
    settingSequeIdentifier.png
    • 步骤3:为按钮设置点击事件
    drawSeeGirlTapped.png

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

    • Outlet:以定义变量的方式将控件链接到代码,该变量代表控件;
    • Aciton:以定义方法的方式将控件链接到代码,该方法在用户与控件进行交互时运行;
      -Outlet Collection:可以将界面上一组相同的控件连接到同一个数组中
      顺带展示一下绑定事件界面Type说明:
    • Strong:强引用
    • Weak:弱引用
    drawSeeGirlTapped_connections.png drawSeeGirlTapped_types.png
    • 步骤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乐园

    相关文章

      网友评论

        本文标题:iOS segue几种界面跳转笔记 (更新中)

        本文链接:https://www.haomeiwen.com/subject/bteqextx.html