iOS开发 - SB与纯代码界面之间的那点破事

SB已经慢慢在开发中占用绝对性的优先,但是有时候我们要使用纯代码界面与SB混合开发时候,难免在跳转中会遇到一些问题。 滴滴滴...小伙伴快上车

此篇幅暂讨论SB与纯代码界面之间的关系,顺便说下出发与回来的事情。
下次再详谈 SB 与 SB 之间的 2B 事情。

小导航:内容不多,自己看

出发


情况一:SB 与 纯代码界面

iOS开发 - SB与纯代码界面之间的那点破事_第1张图片
SB 与 纯代码界面.png
        //show比较智能 无论当前是否在栈中 智能识别当前要使用什么转场
        let vc = SecondViewController()
        self.showViewController(vc, sender: nil)
    
        /// 不在栈时候 A -> B
        //self.presentViewController(vc, animated: true, completion: nil)
        /// 存于栈时候  NAV -> A -> B
        //self.navigationController?.pushViewController(vc, animated: true)
    
        // 转场时候顺便 给第二个视图增加导航栈 即 A -> NAV -> B
        let vc = SecondViewController()
        let nav = UINavigationController(rootViewController: vc)
        self.showViewController(nav, sender: nil)

情况二:SB 与 SB 用代码转场时候

iOS开发 - SB与纯代码界面之间的那点破事_第2张图片
SB 与 SB 用代码转场时候.png
    ///要先拿到SB,不然直接转场,有时出现黑屏情况,估计跟他绑定后,处理不同类的优先关系
    //-> 黑屏是因为默认ViewController默认视图背景是黑的,但是SB默认背景是白的
    // 类跟SB绑定后 [SB + vc.swift]     执行顺序 A -> [SB -> vc.swift]
    let sb = UIStoryboard(name: "Main", bundle:nil) // Main - 即所在SB的名字
    let vc = sb.instantiateViewControllerWithIdentifier(String(SecondViewController)) as! SecondViewController
    self.showViewController(vc, sender: nil)

返程 - 夜深了


    ///出发 A -> B 
    ///  A  <- B
    self.dismissViewControllerAnimated(true, completion: nil)

    ///出发 NAV -> A -> B 
    /// NAV -  A  <- B  <- C
    //弹回上个视图
    self.navigationController?.popViewControllerAnimated(true) 
    //直接弹回根视图 A
    self.navigationController?.popToRootViewControllerAnimated(true)
    //弹回栈中的指定位置 NAV [A,B,C]      0 - A(根)  1- B   2 - C (当前)
    self.navigationController?.popToViewController((self.navigationController?.viewControllers[0])!, animated: true)
    ///小提示:要想返回传值时候,正常传过去时候那样即可

后续...

你可能感兴趣的:(iOS开发 - SB与纯代码界面之间的那点破事)