[Xcode 實際操做]9、實用進階-(24)使用Segue(頁面的跳轉鏈接)進行頁面跳轉並傳遞參數

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

本文將演示使用Segue(頁面的跳轉鏈接)進行頁面跳轉並傳遞參數。swift

參照結合:[Xcode10 實際操做]9、實用進階-(23)多個Storyboard故事板中的頁面跳轉app

打開並編輯主故事版【Main.storyboard】框架

點擊【庫圖標】,打開控件庫面板,編輯器

在【View Controller】視圖控制器上雙擊,往故事板中插入第一個視圖控制器。ide

點擊故事版底部的【+】或【-】放大或縮小故事板的顯示比例。post

將另外一個視圖控制器上按下鼠標右鍵,而後拖動到右側的視圖控制器。spa

(兩個方法:1.鼠標右鍵 2.【Command】+鼠標左鍵)代理

在彈出的鏈接類型列表中,選擇【Show】顯示選項。給兩個視圖控制器添加一個跳轉關係的鏈接。code

而後選擇兩個視圖之間的鏈接線,編輯鏈接的屬性。

點擊【顯示或隱藏檢查器】圖標,打開右側的檢查器面板。

【Identifier】鏈接標識符輸入框:segueToPage3,輸入鏈接的名稱。

接着選擇控制器的根視圖,須要往根視圖上添加一個標籤控件。

點擊【庫圖標】,打開控件庫面板,雙擊【Label】,導入所需的控件。

Label將用來顯示,從上一個頁面,傳遞到當前頁的參數。

點擊【居中】按鈕,將標籤上的文字居中顯示。

使用快捷鍵【Command】+【N】建立在故事版中,視圖控制器對應的類文件。

(在項目文件夾【DemoApp】上點擊鼠標右鍵【New File】建立)

->【Cocoa Touch Class】->【Next】->

【Class】:Page3ViewController。輸入類名。

【Subclass of】:UIViewController,父類名稱

【Language】:Swift,類文件的默認語言

->【Next】->保存默認的存儲位置點擊【Create】

在項目導航區,打開並編輯上文建立的故事版文件【Storyboard.storyboard】

在故事版文檔框架區,選擇視圖控制器,給視圖控制器指定對應的類文件。

點擊身份檢查器圖標,進入身份檢查器面板。

【Class】::Page3ViewController,即輸入剛剛建立的類文件的名稱。

這樣故事板中的視圖控制器,就和類文件進行了綁定和鏈接。

點擊視圖控制器中的標籤控件,點擊【顯示或隱藏輔助編輯器】圖標,打開輔助編輯器。

選擇控制器中的標籤控件,須要將標籤控件,與綁定的類文件的方法進行鏈接。

在按鈕上點擊鼠標右鍵,而後拖動到右側的代碼文件中。

(兩個方法:1.鼠標右鍵 2.【Command】+鼠標左鍵)

設置:

【Connection】:Outlet

【Name】:nameLabel

點擊【Connect】完成按鈕的鏈接設置。

點擊故事版底部的【+】或【-】放大或縮小故事板的顯示比例。

將另外一個視圖控制器上按下鼠標右鍵,而後拖動到右側的視圖控制器。

(兩個方法:1.鼠標右鍵 2.【Command】+鼠標左鍵)

在彈出的鏈接類型列表中,選擇【Show】顯示選項。給兩個視圖控制器添加一個跳轉關係的鏈接。

而後選擇兩個視圖之間的鏈接線,編輯鏈接的屬性。

點擊【顯示或隱藏檢查器】圖標,打開右側的檢查器面板。

【Identifier】鏈接標識符輸入框:segueToPage3,輸入鏈接的名稱。

接着選擇控制器的根視圖,須要往根視圖上添加一個標籤控件。

點擊【庫圖標】,打開控件庫面板,雙擊【Label】,導入所需的控件。

Label將用來顯示,從上一個頁面,傳遞到當前頁的參數。

點擊【居中】按鈕,將標籤上的文字居中顯示。

使用快捷鍵【Command】+【N】建立在故事版中,視圖控制器對應的類文件。

(在項目文件夾【DemoApp】上點擊鼠標右鍵【New File】建立)

->【Cocoa Touch Class】->【Next】->

【Class】:Page2ViewController。輸入類名。

【Subclass of】:UIViewController,父類名稱

【Language】:Swift,類文件的默認語言

->【Next】->保存默認的存儲位置點擊【Create】

在項目導航區,打開並編輯上文建立的故事版文件【Storyboard.storyboard】

在故事版文檔框架區,選擇視圖控制器,給視圖控制器指定對應的類文件。

點擊身份檢查器圖標,進入身份檢查器面板。

【Class】::Page2ViewController,即輸入剛剛建立的類文件的名稱。

這樣故事板中的視圖控制器,就和類文件進行了綁定和鏈接。

點擊視圖控制器中的標籤控件,點擊【顯示或隱藏輔助編輯器】圖標,打開輔助編輯器。

選擇控制器中的按鈕控件,須要將按鈕控件,與綁定的類文件的方法進行鏈接。

在按鈕上點擊鼠標右鍵,而後拖動到右側的代碼文件中。

(兩個方法:1.鼠標右鍵 2.【Command】+鼠標左鍵)

設置:

【Connection】:Action

【Name】:gotoNextPage

點擊【Connect】完成按鈕的鏈接設置。

打開並編輯【Page2ViewController.swift】

 1 import UIKit
 2 
 3 class Page2ViewController: UIViewController {
 4 
 5     //實現按鈕控件的鏈接方法
 6     @IBAction func gotoNextPage(_ sender: Any) {
 7         //當點擊按鈕時,導航視圖控制器,將經過以前設置的鏈接名稱,
 8         //跳轉到指定的視圖控制器。
 9         self.performSegue(withIdentifier: "segueToPage3", sender: nil)
10     }
11     override func viewDidLoad() {
12         super.viewDidLoad()
13 
14         // Do any additional setup after loading the view.
15     }
16     
17     // MARK: - Navigation
18 
19     // In a storyboard-based application, you will often want to do a little preparation before navigation
20     //設置頁面跳轉時傳遞的參數
21     //本代理方法,容許在頁面跳轉前,作一些準備工做。
22     //好比向下一個頁面傳遞數值。
23     override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
24         // Get the new view controller using segue.destination.
25         // Pass the selected object to the new view controller.
26         //首先判斷當前頁面的跳轉鏈接,
27         //其名稱是否爲以前設置的鏈接名稱。
28         if(segue.identifier == "segueToPage3")
29         {
30             //而後得到將要跳轉到的目標視圖控制器,對該視圖控制器的屬性進行賦值,實現數據的傳遞。
31             let vc = segue.destination as! Page3ViewController
32             vc.name = "Jerry"
33         }
34     }
35 }

打開並編輯【Page3ViewController.swift】

如今來編寫代碼,接收頁面傳遞來的數據,並顯示在頁面上。

 1 import UIKit
 2 
 3 class Page3ViewController: UIViewController {
 4 
 5     @IBOutlet weak var nameLabel: UILabel!
 6     //首先添加一個屬性,用來接收從上一個頁面傳來的數據
 7     var name = ""
 8     
 9     override func viewDidLoad() {
10         super.viewDidLoad()
11 
12         // Do any additional setup after loading the view.
13         //而後在繼承自父類的視圖完成加載的方法中,
14         //將接收到的數據,顯示在標籤對象上。
15         self.nameLabel.text = name
16     }
17 }

在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】

 1 import UIKit
 2 
 3 class ViewController: UIViewController {
 4     
 5     //如今爲第二個按鈕添加點擊事件
 6     @IBAction func gotoPage1OfStoryboard(_ sender: AnyObject) {
 7         //從項目中,得到指定名稱的故事版文件
 8         let storyBoard = UIStoryboard(name: "ServiceStoryboard", bundle: nil)
 9         //得到故事板中的初始視圖控制器
10         let vc = storyBoard.instantiateInitialViewController()
11         
12         //在當前的頁面中,跳轉到指定的視圖控制器
13         self.navigationController?.pushViewController(vc!, animated: true)
14     }
15     
16      //如今爲第三個按鈕添加點擊事件
17     @IBAction func gotoPage2OfStoryboard(_ sender: AnyObject) {
18         //從項目中,得到指定名稱的故事版文件
19         let storyBoard = UIStoryboard(name: "ServiceStoryboard", bundle: nil)
20         //根據上文給視圖控制器設置的故事版標識,得到對應的故事版控制器
21         let vc = storyBoard.instantiateViewController(withIdentifier: "servicePage")
22         
23         //在導航控制器中,從當前的頁面跳轉到指定的視圖控制器
24         self.navigationController?.pushViewController(vc, animated: true)
25         //在頁面進行跳轉的同時,隱藏底部的標籤欄
26         self.tabBarController?.tabBar.isHidden = true
27     }
28     
29     override func viewDidLoad() {
30         super.viewDidLoad()
31         // Do any additional setup after loading the view, typically from a nib.
32     }
33     
34     override func didReceiveMemoryWarning() {
35         super.didReceiveMemoryWarning()
36         // Dispose of any resources that can be recreated.
37     }
38 }
相關文章
相關標籤/搜索