《 Swift -->>UINavigationController 的使用和其详细属性的设置等详细解说和控制栈的解说》
/*
《 Swift -->>UINavigationController 的使用和其详细属性的设置等详细解说和控制栈的解说》
*/
// Created by 周双建 on 15/12/5.
// Copyright © 2015年 周双建. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//首先给 控制器的背景设置个颜色
self.view.backgroundColor = UIColor.redColor()
//设置视图控制器的标题(其实导航栏上显示的标题是视图控制器的)
self.title = "成功QQ吧"
/*******************************属性介绍****************************/
//更改导航控制器的背景颜色
self.navigationController?.navigationBar.barTintColor = UIColor.whiteColor()
//设置其背景为图片
/*
设置导航栏的背景图片,需要主意图片的尺寸
1、 640 * 88 图片的命名 XXX.@2x.png
2、其他
*/
// 首先清除上面更改的导航栏的背景颜色
self.navigationController?.navigationBar.barTintColor = UIColor.clearColor()
// 设置导航栏的背景图片
self.navigationController?.navigationBar.setBackgroundImage(UIImage(named: "25E823C0-E342-4FC5-8654-3EDDF85873D1"),forBarMetrics: UIBarMetrics.Default)
/*
运行的效果是,包含上面的状态栏 ,切图片不会自适应导航栏的大小,文字是黑色
// 横屏下的导航栏的背景图片设置
.Top,barMetrics: UIBarMetrics.Default)
/******************************************************************/
//导航栏的透明的处理
/*
如果使用导航控制器,来管理视图,默认情况下,视图的位置坐标原点是在手机屏幕的左上角。 导航栏是出于半透明状态
*/
//设置导航栏 为不透明
self.navigationController?.navigationBar.translucent = false
/*
这时候,视图的圆点坐标,就从导航栏的左下方开始了
/******************************************************************/
//如果不想使用,系统的导航栏,我们可以将其隐藏,但是:视图的坐标,有从手机屏幕的左上角开始了
self.navigationController?.navigationBarHidden = true
//做视图控制器间的切换 使用push 方法
//我们首先,创建一个可以点击的按钮,让它作为跳转的出发
let VCBtn_ZSJ = UIButton(type: UIButtonType.Custom) as UIButton
VCBtn_ZSJ.frame = CGRectMake(40, 100,self.view.frame.size.width-80,40)
VCBtn_ZSJ.setTitle("触发跳转按钮",forState: UIControlState.Normal)
VCBtn_ZSJ.addTarget(self,action: "BtnClick",forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(VCBtn_ZSJ)
@H_928_
403@
@H_935_
404@
跳转方法:
@H_928_
403@
/******************************************************************/
//跳转的出发方法的实现
func BtnClick(){
// 首先将视图导航栏,显示
self.navigationController?.navigationBarHidden = false
let TVC = TwoViewController()
//进行视图的push 跳转
self.navigationController?.pushViewController(TVC,animated: true)
/*
就是界面 从右向左滑动的效果 animated 为 true 同时,第二个控制器的导航栏的左侧,有个返回按钮,点击即可返回上一个视图控制器。
*/
// 现在,我们不想使用系统的返回按钮,我们可以自己定义个返回按钮,这就要到第二个控制器里面,谈论了。go T
}
@H_928_
403@
@H_935_
404@要实现,一个返回按钮,在
跳转后的界面:
@H_928_
403@
import UIKit
class TwoViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//设置视图控制器的背景色
self.view.backgroundColor = UIColor.purpleColor()
// 我们要自定一个返回按钮,进行触发返回事件
let Back_ZSJ = UIButton(type: UIButtonType.Custom) as UIButton
Back_ZSJ.frame = CGRectMake(20,self.view.frame.size.width-40,40)
Back_ZSJ.setTitle("返回上一个控制器",forState: UIControlState.Normal)
Back_ZSJ.addTarget(self,action: "Back",forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(Back_ZSJ)
@H_928_
403@
@H_935_
404@其
跳转方法:
@H_928_
403@
@H_935_
404@
/******************************************************************/
//在这里实现,返回的事件处理
func Back(){
//实现返回
self.navigationController?.popViewControllerAnimated(true)
}
@H_928_
403@
下面我们要讨论视图控制器栈的访问
/*****************************************************************/
//下面我们要讨论视图控制器栈的访问
//第一我们在要创建一个视图控制器 3
//在创建一个按钮,实现界面的跳转
let TVC_Btn = UIButton(type: UIButtonType.Custom) as UIButton
TVC_Btn.setTitle("跳转到第三个视图控制器",forState: UIControlState.Normal)
TVC_Btn.frame = CGRectMake(20, 200,40)
TVC_Btn.addTarget(self,action: "Btn",forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(TVC_Btn)
// Do any additional setup after loading the view.
}
@H_928_
403@
其点击
方法:
@H_928_
403@
/******************************************************************/
//在这里实现界面的跳转
func Btn(){
//获取跳转目标控制的对象
let T_ZSJ = ThreeViewController()
self.navigationController?.pushViewController(T_ZSJ,animated: true)
//
// ThreeViewController.swift
// Swift_007
// Created by 周双建 on 15/12/5.
// Copyright © 2015年 周双建. All rights reserved.
//
import UIKit
class ThreeViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//给视图控制器设置颜色
self.view.backgroundColor = UIColor.blueColor()
//打印视图控制器导航控制器的视图
print(self.navigationController?.viewControllers)
/*
打印结果:
Optional([<Swift_007.ViewController: 0x7fa302474ac0>,<Swift_007.TwoViewController: 0x7fa3024926f0>,<Swift_007.ThreeViewController: 0x7fa302536a40>])
是按照入栈 ,进行输出
*/
/*************************************************************/
//在这里,我们要实现视图控制器的多级跳转
//我们要创建三个按钮,来触发这个事件
/*******************************************/
// 返回上一个界面
let TVC_Btn = UIButton(type: UIButtonType.Custom) as UIButton
TVC_Btn.setTitle("UIControlState.Normal)
TVC_Btn.frame = CGRectMake(20,40)
TVC_Btn.addTarget(self,action: "BackBtn",forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(TVC_Btn)
// 返回到跟控制器
let TVCR_Btn = UIButton(type: UIButtonType.Custom) as UIButton
TVCR_Btn.setTitle("跳转到主控制器",forState: UIControlState.Normal)
TVCR_Btn.frame = CGRectMake(20,40)
TVCR_Btn.addTarget(self,action: "BackRootBtn",forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(TVCR_Btn)
// 跳转到指定的控制器
let TVCRZ_Btn = UIButton(type: UIButtonType.Custom) as UIButton
TVCRZ_Btn.setTitle("跳转到自定义的主控制器",forState: UIControlState.Normal)
TVCRZ_Btn.frame = CGRectMake(20, 300,40)
TVCRZ_Btn.addTarget(self,action: "BackRootAutoBtn",forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(TVCRZ_Btn)
// Do any additional setup after loading the view.
}
/***************************************************************/
//返回,上一个界面的方法
func BackBtn(){
self.navigationController?.popViewControllerAnimated(true)
}
// 返回到根视图控制器
func BackRootBtn(){
self.navigationController?.popToRootViewControllerAnimated(true)
}
//跳转指定的界面
func BackRootAutoBtn(){
// 首先,我们要通过导航栈 ,来获取要跳转控制器的地址
let VC = (self.navigationController?.viewControllers[1])! as UIViewController
self.navigationController?.popToViewController(VC,animated: true)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
/*
// MARK: - Navigation
// In a storyboard-based application,you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue,sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
}
@H_928_
403@