• [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 }
  • 相关阅读:
    八皇后问题
    Catalan数与出栈顺序个数,Java编程模拟
    推荐系统中的协同过滤
    集成学习
    背包问题
    逆波兰表达式
    [leetcode]775. Global and Local Inversions
    [LeetCode]Minimum Moves to Equal Array Elements1,2
    链接属性
    常用表格属性
  • 原文地址:https://www.cnblogs.com/strengthen/p/10093167.html
Copyright © 2020-2023  润新知