iOS Swift 跳转传值

通过重写, Swift提供的一个监听方法prepareForSegue来实现页面之间的传值, 相对来说还是比较简单的, 只不过对于完全没有接触过面向对象编程的同学来说, 理解起来还是比较困难的, 不过没关系, 我们先掌握这门用, 以后自然就明白了

新建一个Swift iOS 项目

老样子我们先新建一个single view application

参照这个就行了 http://huyaohui.com/2015/05/28/resignFirstResponder-close-keyboard/

拖动一个button到viewController

我们要进行跳转自然需要进行触发咯, 一个app不可能无缘无故的进行跳转的对吧, 我们这里就简单的通过一个button进行跳转

添加一个viewcontroller

上面说到了跳转, 那么往哪里跳呢, 肯定不可能忘河里跳对不, OK, 从 object library 中拖一个view controller到storyboard中, 我们就跳转到这个ViewController中去 (ViewController就把他当真一个放东西的合作, 一个app功能很多, 我们肯定不能把所有的东西都放到一个盒子里, 那岂不是乱套了, 聪明的开发者想到了把他们放到不同的盒子内, 让不同的盒子展现不同的内容, 这样不是很棒吗, 各司其职)

拖动一个label到Viewcontroller中

用于表示我们把数据传递到了这里面来

连线

当然两个盒子没有联系自然是不行的, 那么就需要把他们链接起来咯

按住ctrl 双击我们的那个button拖动到我们新建的那个ViewController再敲开触摸板 -> 选择modal

新建一个 NextViewController.swift

我们刚拖了一个viewController到storyboard中, 这个时候他还是一个冷冰冰的界面, 还只能静态的展一些东西. 这样当然不行了, 这时候我们需要新建一个类来关联这个ViewController, 那么你可能要问了, 为什么默认的那个不需要进行关联呢. 哈哈, 其实是默认关联了 iOS系统提供的一个类UIViewController, 其实我们使用到的比较大的类, 基本都是直接或间接继承UIViewController的. 虽然他默认关联了一个类, 但是并没什么卵用, 因为这是系统提供的类, 我们并不能对其进行修改, 所有我们需要新建一个类并继承UIViewController, 这样我们就能对这个类进行操作了

  • cmd+N -> iOS -> Source -> Cocoa Touch Class -> Next

  • Class 就是我们需要新建的文件的名字不需要加后缀名的, Subclass of这里选择 UIViewController 然后Next 我们就新建了一个Swift类了

关联到ViewController上

①选择这个ViewController -> ②打开identity inspector -> ③下拉选择我们新建的那个类(记得敲下回车, 不敲十有八九不会保存的)

编写代码

首先打开NextViewController.swift

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class NextViewController: UIViewController {

// 这里是我们需要传递过来的值, 这是一个可选类型
// 因为我们还不知道他到底有没有值
var name: String?

// 用来表示我们到底又没有把值传过来
@IBOutlet var labelName: UILabel!

override func viewDidLoad() {
super.viewDidLoad()

// 如果name有值就把值付过getName
if let getName = name {
// 如果把值传过来了就把他显示到label中
labelName.text = getName
}
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}

}

编辑ViewController.swift

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// 设置需要跳转到那个viewController
var vc = segue.destinationViewController as! NextViewController
// 设置要传输的数据
vc.name = "我过来了你造吗"
}

}

代码地址

MakeHui/SwiftBaseCodes

总结

千万不要看写了这么, 其实大部分时间都是在扯淡, 安装这个来的话, 也许未必成, 因为Swift的接口参数经常变动, 建议不要直接考代码, 自己手动输入看提示就好了, 应该是没什么问题的. 好, 就写到这了