[Xcode 实际操作]九、实用进阶-(24)使用Segue(页面的跳转连接)进行页面跳转并传递参数

目录:[Swift]Xcode实际操作

本文将演示使用Segue(页面的跳转连接)进行页面跳转并传递参数。

参照结合:[Xcode10 实际操作]九、实用进阶-(23)多个Storyboard故事板中的页面跳转

打开并编辑主故事版【Main.storyboard】

点击【库图标】,打开控件库面板,

在【View Controller】视图控制器上双击,往故事板中插入第一个视图控制器。

点击故事版底部的【+】或【-】放大或缩小故事板的显示比例。

将另一个视图控制器上按下鼠标右键,然后拖动到右侧的视图控制器。

(两个方法:1.鼠标右键 2.【Command】+鼠标左键)

在弹出的连接类型列表中,选择【Show】显示选项。给两个视图控制器添加一个跳转关系的连接。

然后选择两个视图之间的连接线,编辑连接的属性。

点击【显示或隐藏检查器】图标,打开右侧的检查器面板。

【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 }
原文地址:https://www.cnblogs.com/strengthen/p/10093167.html