SB已经慢慢在开发中占用绝对性的优先,但是有时候我们要使用纯代码界面与SB混合开发时候,难免在跳转中会遇到一些问题。🚗 滴滴滴...小伙伴快上车
此篇幅暂讨论SB与纯代码界面之间的关系,顺便说下出发与回来的事情。
下次再详谈 SB 与 SB 之间的 2B 事情。
小导航:内容不多,自己看
出发
情况一:SB 与 纯代码界面

//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 用代码转场时候

///要先拿到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)
///小提示:要想返回传值时候,正常传过去时候那样即可
网友评论