//pressemt<—>dismiss
//push<–>pop
let vc = PersonsViewController()
self.presentViewController(vc, animated: true, completion: nil)/
//self.navigationController!.pushViewController(vc,animated: true)
//let nav = UINavigationController(rootViewController: vc)
//self.presentViewController(nav, animated: true, completion: nil)
swift场转的几种方式及优缺点分析
http://my.oschina.net/JiangTun/blog/662369
http://jingsan0801.farbox.com/post/swift/swiftzhong-ye-mian-tiao-zhuan-de-san-chong-fang-shi
Swift中页面跳转的三种方式
第一种,很简单,直来直往
//跳转
self.presentViewController
//返回
self.dismissModalViewController
第二种,必须在当前视图有navigation,要不实现不了
self.navigationController?.pushViewController
self.navigationController?.popViewController
示例代码
let myStoryBoard = self.storyboard
let loginView:UIViewController = myStoryBoard?.instantiateViewControllerWithIdentifier(“login”) as UIViewController
//login是视图的storyboard id
self.navigationController?.pushViewController(loginView, animated: true)
第三种 通过ViewDelegate实现
在prepareForSegue中传递参数, 使用performSegueWithIdentifier跳转, 在shouldPerformSegueWithIdentifier 中判断是否应该跳转
// 在这个方法中给新页面传递参数
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
if segue.identifier != “userInfoSegue” {
let segueName = segue.identifier
// 选中的行
let selectedRowIndex = self.personalInfoTableView.indexPathForSelectedRow()?.row
let controller = segue.destinationViewController as! UIViewController // 有多个view, 都是UIViewController的子类
// 取选中行的labelname, 设置目标controller的title
controller.title = lableNamesOfCersonalInfoCells[selectedRowIndex!]
}
}
http://www.hangge.com/blog/cache/detail_720.html
Swift - 纯代码实现页面segue跳转,以及参数传递
http://www.cnblogs.com/xiguain/p/3962809.html
[100天Swift]第五天:用代码实现视图跳转
在Xcode推出StoryBoard的时候,Xcode可以更简单的,更聪明的帮助我们做一些简单的事情,快速建立一个Base的App,可是作为一个习惯了写代码的“码农”,还是需要知道如何通过代码去实现这些“简单”的事情。
Swift中的视图跳转
1.跳转到任一UIViewController
var sb = UIStoryboard(name: “Main”, bundle:nil)
var vc = sb.instantiateViewControllerWithIdentifier(“ChooseViewController”) as ChooseViewController
self.presentViewController(vc, animated:true, completion:nil)
以上是为了StoryBoard设定了自己的起始控制器。
2.从当前视图跳转到下一视图
var vc = AnswerViewController()
self.presentViewController(vc, animated: true, completion: nil)
通过presentViewController方式实现。
3.通过dismissViewControllerAnimated(completion:)返回上一个视图
self.dismissViewControllerAnimated(true, completion:nil)
使用dismissViewControllerAnimated。
4.Modal Segue to channel Controller
通过在storyboard设计视图中,选择一个按钮,右键拖动到另一个视图,即可建立动作跳转,但需要重载func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!)方法,如下:
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
var channelC:ChannelController=segue.destinationViewController as ChannelController
channelC.delegate=self
channelC.channelData=self.channelData
}
这些方式应该是StoryBoard出现之后实现跳转的主要方式,注意要实现prepareForSegue,以及对应的参数哦。
5.通过navigationController.pushViewController(animated:)方法
var webView=WebViewController()
webView.detailID=data.newsID
//取导航控制器,添加subView
self.navigationController.pushViewController(webView,animated:true)
6.通过 func popViewControllerAnimated() -> UIViewController! 弹出最上面的视图,并返回下一个视图控制器
7.通过func popToViewController(animated:) -> AnyObject[]!返回到navigationController视图堆栈中指定的某一个视图
未完待续…