zoukankan      html  css  js  c++  java
  • [Swift实际操作]八、实用进阶-(8)使用performSegue在故事板页面之间进行数据传递

    本文将演示故事板页面之间的数据传递。
    首先在一个空白项目中,打开项目自带的故事板文件(Main.storyboard)。
    故事板中已经拥有了一个视图控制器,点击选择该视图控制器。
    然后依此点击[Editor(编辑器)]->Embed In(置入)->[Navigation Controller(导航控制器)],
    将这个视图控制器,置入一个导航控制器之内。
    接着继续往导航控制器添加一个新的视图控制器。
    首先点击右上角的显示或隐藏工具面板图标,打开右侧的面板区。
    然后点击故事板下方的滚动条,查看右侧的内容。
    在在组件中的视图控制器图标上按下手指,然后向故事版中拖动。
    此时故事板中多了一个新的视图控制器,现在将两个视图控制器进行连接,
    点击选择原来的视图控制器。
    然后三个图表中的第一个按下鼠标右键,并向右侧的视图控制器拖动。
    当松开鼠标时,会弹出一个选项菜单,选择菜单中的push(deprecated)选项,
    使第一个视图控制器,可以再导航控制器之中,滑入第二个视图控制器。
    然后选择两个视图控制器之间的连接线。
    给该连接线进行命名,这样就可以在第一个视图控制器之中,
    通过该名称的连接线,滑入第二个视图控制器。
    Identifier: showDetail。按下键盘上的回车键,完成命名操作。
    接着往视图控制器中添加一个按钮,点击右侧的垂直滚动条,跳转到按钮所在的位置。
    点击故事板下方的滚动条,以完整显示第一个视图控制器。
    将按钮控件从控件库中,拖动到故事板中的适当位置。
    当用户点击该按钮时,从当前的视图控制器,跳转到右侧的视图控制器。
    点击进入尺寸检查器面板。点击右侧的垂直滚动条,跳转到坐标和尺寸设置区域。
    然后依此设置按钮控件的坐标、宽度和高度的数值,同时观察按钮的变化。
    设置一个和屏幕大小相同的按钮,接着点击切换至属性检查器面板。
    点击右侧的垂直滚动条,跳转到背景颜色设置区域。
    打开Background的下拉箭头,打开系统预设的颜色面板。
    然后选择一种颜色作为按钮的背景颜色。
    接着点击顶部的显示辅助编辑器图标,打开辅助编辑器。
    点击右上角的显示或隐藏工具面板图标,隐藏右侧的面板区。
    在按钮上按下鼠标右键,并拖动到右侧的类文件中,
    从而建立一个和按钮绑定的动作。
    点击连接右侧的下拉箭头,选择列表中的动作选项。
    Connection:Action
    在名称输入框内输入属性的名称
    Name:showDetail
    然后点击连接图标Connect,在类文件中创建一个和按钮控件相连接的方法。
    完成控件和动作的连接之后,点击顶部的显示标准编辑器图标,切换至标准编辑器模式。
    接着对第二个视图控制器进行编辑。
    首先选择根视图。
    点击右上角的显示或隐藏图标,切换右侧面板区的可见性。
    将一个标签控件,从控件库拖动到故事板的适当位置。
    点击显示尺寸检查器图标,点击显示尺寸检查器面板。
    然后依此设置标签,宽度和高度的数值,同时观察标签的变化。
    获得一个和屏幕相同大小的标签控件,接着点击切换至属性检查器面板。
    点击居中的图标,将文字居中显示。
    设置Font、background.
    接着创建一个和该视图控制器绑定的类文件。在类文件中点击鼠标右键,弹出右键菜单。
    New File ->Next ->Class:DetailViewController /SubClass:UIVIew ->Next ->Create
    然后点击打开故事板文件。选择故事板中的视图控制器。接着切换至身份检查器面板。
    在Class类名输入框内,输入刚刚创建的类文件(DetailViewController),
    使故事板中的视图控制器和类文件进行绑定。
    点击顶部的显示辅助编辑器图标,打开辅助编辑器。
    在在标签上按下鼠标右键,并拖动到右侧的类文件中,从而建立一个和标签绑定的属性。
    设置Name:detailLabel
    DetailViewController.swift文件

     1 import UIKit
     2 
     3 class DetailViewController: UIView{
     4 
     5 //添加一个字符串类型的属性,用来接收来自上一个页面传递的数据
     6     var parameter: String!
     7 
     8     @IBOutlet var detailLabel:UILabel!
     9 
    10     override func viewDidLoad()
    11     {
    12        super.viewDidLoad()
    13 //接着同步更新页面中的标签的文字内容
    14        self.detailLabel.text = self.parameter  
    15      }
    16 
    17 //析构方法
    18      override func didReciveMemoryWarning(){
    19           super.didReceiveMemoryWarning()
    20 
    21      }
    22 }

    ViewController.swift文件

     1 import UIKit
     2 
     3 class ViewController: UIViewController{
     4 
     5     override func viewDidLoad()
     6     {
     7        super.viewDidLoad()
     8      }
     9 
    10     @IBAction func showDetail(_ sender:Any)
    11     {
    12 //当故事板中的按钮被点击时,通过指定名称的连接线,
    13 //在导航控制器中,跳转到第二个视图控制器
    14        self.performSegue(withIdentifier: "showDetail", sender: nil)
    15      }
    16 
    17 //重写父类中的方法,用来监听故事板中的连接线的跳转动作。
    18     override func prepare(for segue: UIStoryboardSegue, send: Any?)
    19     {
    20 //获得连接的目标视图控制器,并转换为指定类型
    21         let vc = segue.destination as! DetailViewController
    22 //设置该视图控制器的属性,然后点击至DetailViewController.swift文件
    23         vc.parameter = "Hello,Strengthen!"
    24      }
    25 
    26 //析构方法
    27      override func didReciveMemoryWarning(){
    28           super.didReceiveMemoryWarning()
    29 
    30      }
    31 }
     1 import UIKit
     2 
     3 internal class ViewController: UIViewController{
     4 
     5     override internal func viewDidLoad()
     6 
     7     @IBAction func showDetail(_ sender:Any)
     8 
     9     override internal func didReceiveMemoryWarning()
    10 }
  • 相关阅读:
    【转】[fix] Wireshark error: There are no interfaces on which a capture can be done. on Mac OS X
    【转载】Linux 文件系统的目录结构
    postgreSQL使用
    [转载] Linux启动过程详解-《别怕Linux编程》之八
    冒泡排序
    java值类型和引用类型
    冒泡排序法与二分查找法
    关系型数据库
    SQList的建表并添加数据练习
    数据存储——SQLite数据库存储
  • 原文地址:https://www.cnblogs.com/strengthen/p/9847805.html
Copyright © 2011-2022 走看看