美文网首页花落√莫相思
47-Swift 之控制器之间的跳转

47-Swift 之控制器之间的跳转

作者: NetWork小贱 | 来源:发表于2017-07-18 16:15 被阅读26次

    一 、 App开发中控制器之间的跳转有哪些方法?

    》1 、导航跳转
    》2、模态跳转

    二 、导航跳转 & 模态跳转 的介绍

    1、导航跳转

    导航跳转是通过 UINavigationController 来管理控制器之间的跳转关系,控制器的创建和释放都有UINavigationController管理器控制,开发人员不需要做什么处理。

    其优点:

    跳转方便和控制器之间的生存不需要开发者管理。

    2、模态跳转

    模态跳转 是在当前控制器上直接弹出另一个控制器,控制器之间的跳转需要开发者管理,同时控制器的生存也需要开发者手动管理。

    其优点:

    跳转简单

    三 、 导航跳转 & 模态跳转 的使用举例

    1、 导航跳转

    1> 添加导航管理控制器
    window = UIWindow.init(frame: UIScreen.main.bounds)
    window?.backgroundColor = UIColor.white
    window?.makeKeyAndVisible()
    let RootVC = RootViewController.init()
    let RootNavVC = UINavigationController.init(rootViewController: RootVC)
    window?.rootViewController = RootNavVC
    
    
    2> 添加两个控制器 FirstNavViewController & SecondNavViewController
    763C93F7-3F21-4193-A684-01CA1941145F.png

    添加的控制器如上图蓝色所示。

    3> 设置跳转触发按钮
    let NavButton = UIButton.init(type: .custom)
    NavButton.frame = CGRect.init(x: 20, y: 70, width: UIScreen.main.bounds.width-40, height: 40)
    NavButton.setTitle("Nav Jump 导航跳转", for: .normal)
    NavButton.setTitleColor(UIColor.magenta, for: .normal)
    NavButton.addTarget(self, action: #selector(navPush), for: .touchUpInside)
    self.view.addSubview(NavButton)
    
    4> 导航跳转的方法
    func navPush() -> Void {
        let pushVc = FirstNavViewController.init()
        self.navigationController?.pushViewController(pushVc, animated: false)
    }
    

    导航跳转完成,进入新的页面,新页面会带有导航控制器的返回按钮(我们也可以修改导航的返回按钮,我们在下一节再说)

    5841D2CB-C539-4134-860D-8E9F81CFDCA8.png

    如图上图所示。

    2、 模态跳转

    1> 添加模态跳转的触发按钮
    let ModalButton = UIButton.init(type: .custom)
    ModalButton.frame = CGRect.init(x: 20, y: 120, width: UIScreen.main.bounds.width-40, height: 40)
    ModalButton.setTitle("Modal Jump 模态跳转", for: .normal)
    ModalButton.setTitleColor(UIColor.magenta, for: .normal)
    ModalButton.addTarget(self, action: #selector(modalJump), for: .touchUpInside)
    self.view.addSubview(ModalButton)
    
    
    2 > 模态跳转的方法
    func modalJump() -> Void {
        let modalVc = SecondNavViewController.init()
        self.present(modalVc, animated: false) { 
            print("模态跳转完成")
        }
    }
    
    3> 模态跳转的页面,不带返回按钮,如果想返回需要我们自己管理。方法如下

    #######1 、 返回触发按钮

    let ModalButton = UIButton.init(type: .custom)
    ModalButton.frame = CGRect.init(x: 20, y: 20, width: 140, height: 44)
    ModalButton.setTitle("< 返回", for: .normal)
    ModalButton.setTitleColor(UIColor.magenta, for: .normal)
    ModalButton.contentHorizontalAlignment = .left
    ModalButton.addTarget(self, action: #selector(modalJumpBack), for: .touchUpInside)
    self.view.addSubview(ModalButton)
    

    ####### 2 、 返回触发的方法

    func modalJumpBack() -> Void {
         self .dismiss(animated: true) {
            print("模态跳转返回")
         };
    }
    

    效果如图:

    C7C8524E-DA00-4C01-87D8-7E6FF1C8C02F.png

    四 、故事板的导航跳转 & 模态跳转

    1、 首先要添加导航控制器,并设置为App的入口。如下图:

    9AECD1F3-F92C-4CFF-A45E-A4845187D394.png

    2、 给控制器添加RootVC 。如下图所示:

    91B7B6F0-309F-4A99-B4B8-674D05F922DD.png

    它与导航控制器的关系连接如下图:

    6BF470CC-83F2-49B1-AFC0-C5C146A4BBFC.png

    操作方法是: 用鼠标点击 " Navigation Controller " 的页面,同时注意上图小方格标记的位置是否是它。然后按住键盘上的 " option" 按键不放,再点击鼠标的右键,然后拖动到 上图 " First Nav View Controller" 页面上,就会出现上图黑色的方块,然后选择 " root view controller" 选项。

    3 、 添加要跳转的控制器

    4C181061-2818-41E1-8745-30006E345287.png

    它与上个控制器的关系连接如下图:

    E00CC788-6B2B-4963-A3F9-45EAA3F50FEF.png

    操作方法:点击绿色的 " 导航跳转" 按钮,在按住键盘上的 " option " 键不放,再按住鼠标右键不放,进行拖动到 " Second Nav View Controller" 页面上,就会出现各色的方框,如上图所示。然后选择 " Show" 即可。

    故事板的导航跳转的效果图
    Untitled.gif

    4、 模态跳转

    1、 添加模态跳转的触发按钮,如下图所示:
    15D27C97-21FD-4692-B7A6-4F1F308E22B7.png
    2、 添加模态跳转的控制器,如下图
    194C4568-16D3-439C-8F5E-E93284F05562.png
    3 、 他们的关系添连接如下图:
    81A05107-CACA-4320-98FF-C50F3A988197.png

    操作方法:点击红色的 " 模态跳转" 按钮,在按住键盘上的 " option " 键不放,再按住鼠标右键不放,进行拖动到 " Second Nav View Controller" 页面上,就会出现各色的方框,如上图所示。然后选择 " Present Modally" 即可。

    4、 模态跳转的效果图
    Untitled.gif

    相关文章

      网友评论

        本文标题:47-Swift 之控制器之间的跳转

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