iOS之UINavigationController的使用

1.UINavigationController(导航控制器)的介绍

1)viewController属性 

     该属性保存着UINavigationController栈中视图控制器的信息。


2)UINavigationController的两个视图

A:UINavigationBar

当某个UIViewController对象成为UINavigationController的栈顶对象时,UINavigationBar对象会访问该UIViewController对象的navigationItem属性,获取界面显示的相关内容

B:topViewController

该属性是UINavigationController栈顶上的视图控制器,当前所处的视图控制器。


3)navigationItem:UINavigationItem 

     UINavigationItem对象的作用是为UINavigationBar提供绘图需要的内容。

     UINavigationController扩展UIViewController了,增加了navigationItem的属性。该属性包括leftBarButtonItem,titleView,rightBarButtonItem,而它们又是UIBarButtonItem对象。


2.UINavigationController的使用(demo如下)

  Demo中包括了首页,第二页,第三页之间的跳转以及从首页navigationBar的设置。

//
//  AppDelegate.swift

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    //在显示App给用户之前执行的最后的初始化操作
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        window = UIWindow(frame: UIScreen.mainScreen().bounds)
        window?.backgroundColor = UIColor.whiteColor()
        let nav = UINavigationController(rootViewController: ViewController())
        window?.rootViewController = nav
        window?.makeKeyAndVisible()
        
        //导航栏上的背景色
        UINavigationBar.appearance().barTintColor = UIColor(red: 33/255, green: 150/255, blue: 243/255, alpha: 1)
        //textTitle的颜色
        UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]
        //导航栏上的图标的颜色
        UINavigationBar.appearance().tintColor = UIColor.whiteColor()
    
        return true
    }
    
    //App将要从foreground切换到background需要执行的操作
    func applicationWillResignActive(application: UIApplication) {
    }

    //App已经进行background后需要执行的操作
    func applicationDidEnterBackground(application: UIApplication) {
    }

    //App将要从background进行foreground需要执行的操作,此时应用程序的状态不是Active
    func applicationWillEnterForeground(application: UIApplication) {
    }

    //App切换到Active需要执行的操作
    func applicationDidBecomeActive(application: UIApplication) {
    }

    //App将要终止执行的操作
    func applicationWillTerminate(application: UIApplication) {
    }


}

//  ViewController.swift

import UIKit

class ViewController: UIViewController {
    var button = UIButton()
    let width = UIScreen.mainScreen().bounds.width
    let height = UIScreen.mainScreen().bounds.height
    
    override func viewDidLoad() {
        super.viewDidLoad()
        //设置title
        self.navigationItem.title = "首页"

        //设置跳转的按钮
        button = UIButton(frame: CGRectMake(width/2,height/2,100,50))
        button.setTitle("下一页", forState: UIControlState.Normal)
        button.backgroundColor = UIColor.redColor()
        button.addTarget(self, action: "jump", forControlEvents: UIControlEvents.TouchUpInside)
        
        //添加leftBarButton
        let leftButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Add, target: self, action: "Add")
        self.navigationItem.leftBarButtonItem = leftButton
        
        let rightButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Edit, target: self  , action: "Edit")
        self.navigationItem.rightBarButtonItem = rightButton
        self.view.addSubview(button)
    }
    
    
    func jump(){
        let secVC = SecondViewController()
        self.navigationController?.pushViewController(secVC, animated: true)
    }

    func Add(){
        print("Add")
    }
    
    func Edit(){
        print("Edit")
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

}

//
//  SecondViewController.swift

import UIKit

class SecondViewController: UIViewController {

    var button = UIButton()
    let width = UIScreen.mainScreen().bounds.width
    let height = UIScreen.mainScreen().bounds.height
    
    override func viewDidLoad() {
        super.viewDidLoad()
        self.navigationItem.title = "第二页"
        
        button = UIButton(frame: CGRectMake(width/2,height/2,100,50))
        button.setTitle("下一页", forState: UIControlState.Normal)
        button.backgroundColor = UIColor.grayColor()
        button.addTarget(self, action: "jump", forControlEvents: UIControlEvents.TouchUpInside)
        
        
        self.view.addSubview(button)
    }
    
    func jump(){
        let thiVC = ThirdViewController()
        self.navigationController?.pushViewController(thiVC, animated: true)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}


//
//  ThirdViewController.swift

import UIKit

class ThirdViewController: UIViewController {

    var button = UIButton()
    let width = UIScreen.mainScreen().bounds.width
    let height = UIScreen.mainScreen().bounds.height
    
    override func viewDidLoad() {
        super.viewDidLoad()
        self.navigationItem.title = "最后一页"
        
        button = UIButton(frame: CGRectMake(width/2,height/2,100,50))
        button.setTitle("回到首页", forState: UIControlState.Normal)
        button.backgroundColor = UIColor.blueColor()
        button.addTarget(self, action: "jump", forControlEvents: UIControlEvents.TouchUpInside)
        
        self.view.addSubview(button)
    }
    
    func jump(){
        self.navigationController?.popToRootViewControllerAnimated(true)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}



你可能感兴趣的:(ios,swift,导航栏)