Swift 传值之闭包传值

Swift的闭包传值和OC中的block传值非常相似

项目的建立和之前的属性传值和代理传值类似 

属性传值:http://blog.csdn.net/zhangjitao_boke/article/details/50606185

代理传值:http://blog.csdn.net/zhangjitao_boke/article/details/50606707

闭包传值:http://blog.csdn.net/zhangjitao_boke/article/details/50607325

通知传值:http://blog.csdn.net/zhangjitao_boke/article/details/50607818

单例传值:http://blog.csdn.net/zhangjitao_boke/article/details/50608066

直接上代码

在FirstViewController中

//
// FirstViewController.swift
// BiBaoPassValue
//
// Created by JT on 16/1/29.
// Copyright © 2016年 JT. All rights reserved.
//

import UIKit

class FirstViewController: UIViewController {

@IBOutlet weak var firstTextField: UITextField!

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

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
let storyBoard = UIStoryboard.init(name: "Main", bundle: nil)
let secondVC = storyBoard.instantiateViewControllerWithIdentifier("secondVC") as! SecondViewController
// 给secondVC的闭包实现方法
secondVC.passValue = { (text:String) -> Void in
// 闭包方法传过来值
self.firstTextField.text = text
}

self.navigationController?.pushViewController(secondVC, animated: true)
}
}

SecondViewController中实现代码

//
// SecondViewController.swift
// BiBaoPassValue
//
// Created by JT on 16/1/29.
// Copyright © 2016年 JT. All rights reserved.
//

import UIKit

// 定义一个闭包类型
typealias passValueClosure = (String) -> Void


class SecondViewController: UIViewController {

@IBOutlet weak var secondTextField: UITextField!
// 闭包变量
var passValue:passValueClosure?


override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: self, action: "backAction")
}

func backAction() {
// 如果闭包不为空
if passValue != nil {
self.passValue!(secondTextField.text!)
}

self.navigationController?.popViewControllerAnimated(true)
}

}

这样就能实现闭包传值了,闭包传值记住几点

1 声明闭包类型

2 在要传值的界面定义闭包变量

3 判断闭包变量是否为nil,如果不为nil的话,就执行闭包传值

4 在接收的控制器里设置传值控制器闭包的方法,接收值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值