[Xcode 實際操做]3、視圖控制器-(5)使用UINavigationController視圖入棧和出棧

目錄:[Swift]Xcode實際操做html

本文將演示使用導航控制器的幾個跳轉方式ide

選擇編輯第二個視圖控制器文件post

  1 import UIKit
  2 //定義一個全局變量,用來記錄當前顯示區域的視圖的編號
  3 var pageNum = 0
  4 
  5 class SecondSubViewController: UIViewController {
  6 
  7     override func viewDidLoad() {
  8         super.viewDidLoad()
  9 
 10         // Do any additional setup after loading the view.
 11         //每當當前視圖控制器被建立依此,全局變量即增長1
 12         pageNum = pageNum + 1
 13         //而後根據當前的全局變量數值,設置視圖控制器的標題名稱
 14         self.title = "Page\(pageNum)"
 15         //設置視圖控制器的背景顏色爲紫色
 16         self.view.backgroundColor = UIColor.purple
 17         
 18         //添加一個按鈕,當點擊按鈕時,跳轉(Push)至下一頁面
 19         let push = UIButton(frame: CGRect(x: 40, y: 120, width: 240, height: 40))
 20         //設置按鈕上的標題文字
 21         push.setTitle("Push Page", for: UIControl.State())
 22         //設置按鈕的背景顏色爲橙色
 23         push.backgroundColor = UIColor.orange
 24         //給按鈕綁定點擊事件
 25         push.addTarget(self, action: #selector(SecondSubViewController.pushPage), for: UIControl.Event.touchUpInside)
 26         //將按鈕添加到當前視圖控制器的根視圖
 27         self.view.addSubview(push)
 28         
 29         //再添加一個按鈕,當點擊按鈕時
 30         //從當前頁面返回(Pop)至上一級頁面
 31         let pop = UIButton(frame: CGRect(x: 40, y: 180, width: 240, height: 40))
 32         //設置按鈕上的標題文字
 33         pop.setTitle("Pop Page", for: UIControl.State())
 34         //設置按鈕的背景顏色爲橙色
 35         pop.backgroundColor = UIColor.orange
 36         //給按鈕綁定點擊事件
 37         pop.addTarget(self, action: #selector(SecondSubViewController.popPage), for: UIControl.Event.touchUpInside)
 38         //將按鈕添加到當前視圖控制器的根視圖
 39         self.view.addSubview(pop)
 40         
 41         //再添加一個按鈕,當點擊按鈕時
 42         //跳轉(Pop)到指定序號的視圖
 43         let index = UIButton(frame: CGRect(x: 40, y: 280, width: 240, height: 40))
 44         //設置按鈕上的標題文字
 45         index.setTitle("Goto Index Page", for: UIControl.State())
 46         //設置按鈕的背景顏色爲橙色
 47         index.backgroundColor = UIColor.orange
 48         //給按鈕綁定點擊事件
 49         index.addTarget(self, action: #selector(SecondSubViewController.gotoIndexPage), for: UIControl.Event.touchUpInside)
 50         //將按鈕添加到當前視圖控制器的根視圖
 51         self.view.addSubview(index)
 52         
 53         //繼續添加一個按鈕,當點擊按鈕時
 54         //跳轉(Pop)到根視圖
 55         let root = UIButton(frame: CGRect(x: 40, y: 340, width: 240, height: 40))
 56         //設置按鈕上的標題文字
 57         root.setTitle("Goto Root Page", for: UIControl.State())
 58         //設置按鈕的背景顏色爲橙色
 59         root.backgroundColor = UIColor.orange
 60         //給按鈕綁定點擊事件
 61         root.addTarget(self, action: #selector(SecondSubViewController.gotoRootPage), for: UIControl.Event.touchUpInside)
 62         //將按鈕添加到當前視圖控制器的根視圖
 63         self.view.addSubview(root)
 64     }
 65     
 66     //建立第一個按鈕綁定的方法
 67     @objc func pushPage()
 68     {
 69         //實例化第二個視圖控制器
 70         let viewController = SecondSubViewController()
 71         //把視圖控制器,Push到導航視圖裏,至關於入棧操做
 72         self.navigationController?.pushViewController(viewController, animated: true)
 73     }
 74     
 75     //建立第二個按鈕綁定的方法
 76     @objc func popPage()
 77     {
 78         //當前視圖控制器,將從導航視圖控制器堆棧中移除,
 79         //並返回至上一頁面,至關於出棧操做。
 80         self.navigationController?.popViewController(animated: true)
 81     }
 82     
 83     //建立第三個按鈕綁定的方法
 84     @objc func gotoIndexPage()
 85     {
 86         //根據導航視圖控制器中的全局序號,
 87         //查找堆棧中指定序號的視圖控制器
 88         let viewController = self.navigationController?.viewControllers[2]
 89         //而後在導航視圖控制器中,跳轉至該視圖控制器
 90         self.navigationController?.popToViewController(viewController!, animated: true)
 91     }
 92     
 93     //建立第四個按鈕綁定的方法
 94     @objc func gotoRootPage()
 95     {
 96         //當用戶點擊第四個按鈕時,
 97         //導航控制器中的全部子視圖控制器,都將所有出棧,
 98         //從而跳轉至根視圖控制器
 99         self.navigationController?.popToRootViewController(animated: true)
100     }
101 
102     override func didReceiveMemoryWarning() {
103         super.didReceiveMemoryWarning()
104         // Dispose of any resources that can be recreated.
105     }
106 }
相關文章
相關標籤/搜索