您的位置:首页 > 移动开发 > Swift

Swift present 与 push 跳转问题

2017-01-04 17:00 155 查看

Swift 使用presentViewController 跳转页面后显示黑屏

原因:storyboard 制作页面 和 纯代码页面,需要使用两种不同方法进行页面跳转

Storyboard 界面:使用代码跳转

let sb = UIStoryboard(name: "Main", bundle:nil)
let vc = sb.instantiateViewControllerWithIdentifier("SecondViewController") as! SecondViewController

self.presentViewController(vc, animated: true, completion: nil)

注意:记得要设置 StoryboardID ,可以在 Identifier inspector 中修改



StoryboardID

纯代码界面

//present方式
let vc = SecondViewController()
self.presentViewController(vc, animated: true, completion: nil)
// 转场动画风格 modalTransitionStyle

Modal 方式转场一般使用在几个没有共同样式的控制器之间。
如果有共同样式的话,大都数用 navigation控制器和 tabBar控制器来实现。

//push方式
self.navigationController.pushViewController(vc, animated:true)

扩展 naviagation //push方式
如果是同个栈的控制器 需要弹出到指定界面:

//弹回根视图
self.navigationController?.popToRootViewControllerAnimated(true)
//指定位置
self.navigationController?.popToViewController((self.navigationController?.viewControllers[0])!, animated: true)


SB与代码结合 ,使用SB连接时候,多条连线传值问题

//使用SB连接转场每次都会触发下面方法
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
//可再每个连线处类似按钮的东西加上identifier,即可判断不同指向
if segue.identifier == "segueIdentifier" {

//不带导航的方式
let vc = segue.destinationViewController as! nextVC
//下个视图前了带了导航的方式
//let nv_vc = segue.destinationViewController.childViewControllers[0] as! nextVC
}
}


文/逗牛(简书作者)

原文链接:http://www.jianshu.com/p/376274daea82

著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios swift 界面