/*
《 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)
/*
运行的效果是,包含上面的状态栏 ,切图片不会自适应导航栏的大小,文字是黑色
// 横屏下的导航栏的背景图片设置
ottom:0px; font-size:17px; line-height:normal; font-family:Menlo; color:rgb(112,forBarPosition: UIBarPosition.Top,barMetrics: UIBarMetrics.Default)
/******************************************************************/
//导航栏的透明的处理
/*
如果使用导航控制器,来管理视图,默认情况下,视图的位置坐标原点是在手机屏幕的左上角。 导航栏是出于半透明状态
*/
//设置导航栏 为不透明
self.navigationController?.navigationBar.translucent = false
/*
这时候,视图的圆点坐标,就从导航栏的左下方开始了
/******************************************************************/
//如果不想使用,系统的导航栏,我们可以将其隐藏,但是:视图的坐标,有从手机屏幕的左上角开始了
self.navigationController?.navigationBarHidden = true
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)
/******************************************************************/
func BtnClick(){
// 首先将视图导航栏,显示
self.navigationController?.navigationBarHidden = false
let TVC = TwoViewController()
//进行视图的push 跳转
self.navigationController?.pushViewController(TVC,animated: true)
/*
就是界面 从右向左滑动的效果 animated 为 true 同时,第二个控制器的导航栏的左侧,有个返回按钮,点击即可返回上一个视图控制器。
*/
// 现在,我们不想使用系统的返回按钮,我们可以自己定义个返回按钮,这就要到第二个控制器里面,谈论了。go T
}
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)
/******************************************************************/
//在这里实现,返回的事件处理
func Back(){
//实现返回
self.navigationController?.popViewControllerAnimated(true)
}
下面我们要讨论视图控制器栈的访问
/*****************************************************************/
//下面我们要讨论视图控制器栈的访问
//第一我们在要创建一个视图控制器 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.
}
/******************************************************************/
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("normal; font-family:'PingFang SC'; color:rgb(209,forState: 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.
}
*/
}
/****************************************************************/
// 设置 导航栏的右侧按钮
let Itms = UIBarButtonItem(title: "按钮右",style: UIBarButtonItemStyle.Plain,target: self,action: "Btn_Right")
self.navigationItem.rightBarButtonItem = Itms
// 设置左按钮
// 使用系统图标
/*
public enum UIBarButtonSystemItem : Int {
case Cancel Cancel 取消
case Edit Edit 编辑
case Save Save 保存
case Add + 添加
case FlexibleSpace 不可使用
case Fixedspace 不可使用
case Compose 编辑
case Reply 类似与返回按钮
case Action 分享按钮
case Organize 文件
case Bookmarks 书签
case Search 收索镜
case Refresh 重载
case Stop 停止 X
case Camera 相机
case Trash 垃圾筐
case Play 播放图
case Pause 停止 ||
case Rewind 快退按钮
case FastForward 快进按钮
@available(iOS 3.0,*)
case Undo Undo
case Redo Redo
@available(iOS 4.0,0)"> case PageCurl 无显示
}
*/
let Itms1 = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.PageCurl,170)"> self.navigationItem.leftBarButtonItem = Itms1
/****************************************************************/
//设置新出按钮的,返回键上的文字
let TTCL = UIBarButtonItem(title: "笑话",action: "Plain")
self.navigationItem.backBarButtonItem = TTCL
// Do any additional setup after loading the view,typically from a nib.
}
func BtnClick(){
// 首先将视图导航栏,显示
self.navigationController?.navigationBarHidden = false
let TVC = TwoViewController()
//进行视图的push 跳转
self.navigationController?.pushViewController(TVC,animated: true)
/*
就是界面 从右向左滑动的效果 animated 为 true 同时,第二个控制器的导航栏的左侧,有个返回按钮,点击即可返回上一个视图控制器。
*/
// 现在,我们不想使用系统的返回按钮,我们可以自己定义个返回按钮,这就要到第二个控制器里面,谈论了。go T
}
//右侧,按钮的点击事件处理
func Btn_Right(){
print("我是右按钮")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// dispose of any resources that can be recreated.
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。