目錄:[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 }