为有牺牲多壮志,敢教日月换新天。

[Swift实际操作]八、实用进阶-(8)使用performSegue在故事板页面之间进行数据传递

热烈欢迎,请直接点击!!!

进入博主App Store主页,下载使用各个作品!!!

注:博主将坚持每月上线一个新app!!!

本文将演示故事板页面之间的数据传递。
首先在一个空白项目中,打开项目自带的故事板文件(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 }

 

posted @ 2018-10-25 09:20  为敢技术  阅读(390)  评论(0编辑  收藏  举报