创建导航视图控制器
先在AppDelegate类下
func application()下
//根据一个根视图控制器创建一个导航视图控制器
let vc =ViewController()
let navc =UINavigationController(rootViewController: vc)
//将应用的根视图控制器设置为导航视图控制器
window =UIWindow(frame: UIScreen.mainScreen().bounds)
window?.rootViewController = navc
window?.makeKeyAndVisible()
运行后得到一个空的导航栏
每一个被导航控制器所管理的视图控制器都有一个navigationItem(这里面包括了做按钮,右按钮,中间标题,中间视图)
在viewContorller类下
//设置导航栏的标题
navigationItem.title ="Setting"
//设置导航栏左按钮(UIBarButtonItem)
let leftBarBtn =UIBarButtonItem(barButtonSystemItem: .Play, target:self, action: "leftBtn")
navigationItem.leftBarButtonItem = leftBarBtn
//设置导航栏右按钮
let rightBarBtn =UIBarButtonItem(title: "next", style:UIBarButtonItemStyle.Plain, target:self, action: "rightBtn")
navigationItem.rightBarButtonItem = rightBarBtn
//设置中间视图
let segment =UISegmentedControl(items: ["左","右"])
segment.frame =CGRectMake(0,0, 100,30)
//当前选择的视图(从0开始)
segment.selectedSegmentIndex =0
navigationItem.titleView = segment
//本类中(视图控制器)访问navigationController就是获取到本视图控制器所在的导航视图控制器
//导航栏是否隐藏
navigationController?.navigationBarHidden =false//不隐藏
//背景颜色
navigationController?.navigationBar.backgroundColor =UIColor.cyanColor()
//导航栏本身的颜色
//navigationController?.navigationBar.barTintColor = UIColor.blueColor()
//导航栏元素的颜色
navigationController?.navigationBar.tintColor =UIColor.blackColor()
//导航栏半透明效果(开启时坐标原点将出现在导航栏左上角)
navigationController?.navigationBar.translucent =true
视图控制器的跳转
创建SecendViewController类
func rightBtn(){
//跳转第二个控制器页面
//创建第二个控制器
let secondvc =SecendViewController()
//使用当前控制器所在的导航视图控制器跳转到第二个控制器
navigationController?.pushViewController(secondvc, animated:true)
println("right")//当按下按钮时打印“right”
}
func leftBtn(){
println("left")//当按下按钮时打印“left”
}
运行效果如下
返回上一页面
在SecendViewController类下
//创建左按钮
let leftBtn =UIBarButtonItem(title: "Back", style:UIBarButtonItemStyle.Plain, target:self, action: "leftBtn")
navigationItem.leftBarButtonItem = leftBtn
当前页面显示的一定是栈顶的视图控制器
栈的特点:先进后出, 后进先出。
func leftBtn(){
//将secondvc出栈 popViewControllerAnimated:将显示在栈顶的控制器出栈(返回上一个页面)pushViewController(进入下一个页面)
navigationController?.popViewControllerAnimated(true)
println("返回")//返回后打印
}
模态
创建按钮
let motaiBtn =UIButton(frame: CGRectMake(100,100, 100,100))
motaiBtn.setTitle("弹出", forState:UIControlState.Normal)
motaiBtn.layer.borderColor =UIColor.blackColor().CGColor//边框颜色
motaiBtn.layer.borderWidth =1 //边框宽度
motaiBtn.setTitleColor(UIColor.blackColor(), forState:UIControlState.Normal)//字体颜色
motaiBtn.addTarget(self, action:"persentTosix", forControlEvents:UIControlEvents.TouchUpInside)//按钮点击事件
view.addSubview(motaiBtn)
//按钮模态显示第六个视图控制器
func persentTosix(){
let six =SixthViewController()
//模态显示,跟导航视图控制器没有关系
//completion模态显示完成之后要执行的闭包
presentViewController(six, animated:true) { () -> Voidin
//模态显示完成之后要执行的代码
println("模态完成")//模态完成后打印
}
}
在SixthViewController类下
let backBtn =UIButton(frame: CGRectMake(50,100, 100,50))
backBtn.setTitle("返回", forState:UIControlState.Normal)
backBtn.addTarget(self, action:"back", forControlEvents: UIControlEvents.TouchUpInside)
backBtn.layer.borderWidth =1
backBtn.setTitleColor(UIColor.blackColor(), forState:UIControlState.Normal)//通常状态下按钮字体颜色
backBtn.setTitleColor(UIColor.redColor(), forState:UIControlState.Highlighted)//点击时按钮字体颜色
backBtn.layer.cornerRadius =50//边框圆角
view.addSubview(backBtn)
//按钮点击事件
func back(){
//第一种dismissViewController()模态消失过程不可定制
//第二种dismissViewControllerAnimated模态消失可定制化(是否需要动画,模态结束后执行代码段)
dismissViewControllerAnimated(true, completion: { () ->Void in
println("模态消失")
})
}