Swift代理和传值
第一个视图控制器:
import UIKit
// 遵循协议
class ViewController: UIViewController,SecondVCDelegate
{
override func viewDidLoad() {
super.viewDidLoad()
// 创建一个button
let button1 = UIButton(frame: CGRectMake(120, 120, 50, 50))
// 修改背景颜色
button1.backgroundColor = UIColor.redColor()
self.view.addSubview(button1)
// 点击方法
button1.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside)
}
// button点击方法
func buttonAction(sender:UIButton){
// 跳转下一个界面
let secondVC = SecondViewController()
// 属性传值
secondVC.passValue = "咻"
// 指定代理
// secondVC.delegate = self
// 定义block
secondVC.block = { (tempColor:UIColor)->Void in
self.view.backgroundColor = tempColor
}
self.navigationController?.pushViewController(secondVC, animated: true)
}
// 实现代理方法
func changeColor(tempColor: UIColor) {
self.view.backgroundColor = tempColor
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
/*************************************************************/
代理的六大步骤
1.后页面制定协议
2.前页面代理遵循协议
3.后页面设置代理属性
4.前页面指定代理self
5.后页面发送代理方法命令
6.前页面代理实现代理方法
第二个视图控制器:
import UIKit
protocol SecondVCDelegate {
// 协议中的方法
func changeColor(tempColor:UIColor)
}
class SecondViewController: UIViewController {
// 属性
var passValue:String?
// 代理属性
var delegate:SecondVCDelegate?
// block属性
var block:((UIColor)->Void)?
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.cyanColor()
print(self.passValue!)
self.title = self.passValue
// 返回button
let button2 = UIButton(frame: CGRectMake(120, 120, 50, 50))
button2.backgroundColor = UIColor.blackColor()
button2.addTarget(self, action: "button2Action:", forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(button2)
}
// button2点击方法
func button2Action(sender:UIButton) {
// 发送代理方法命令
// self.delegate?.changeColor(UIColor.redColor())
// 调用block
self.block!(UIColor.redColor())
// 返回
self.navigationController?.popViewControllerAnimated(true)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
最新文章
- 网页缩放对 FLASH的影响
- 小技巧-a标签去除蓝圈
- java 格式化代码 不进行换行
- c++ g++3.4.5 g++4.8.2 由编译器引起的编译异常
- poi-3.11-beta2-20140822.jar操作excel方法
- yii2的安装使用
- JSP的优势与劣势浅析
- [转]Laravel 4之验证
- 关于const限定符
- 超人学院Hadoop大数据技术资源分享
- 自写jquery网页回到顶部效果,渐隐图标,引用js文件就可以
- [js高手之路]Node.js模板引擎教程-jade速学与实战4-模板引用,继承,插件使用
- Xcode中Objc动态调用方法同时避免警告的几个办法
- MYSQL一键安装
- finereport报表--动态格间运算 一
- sql 日常使用记录
- yii2.0 curd操作
- Linux的用户管理(基础篇)
- 1. RNN神经网络模型原理
- C++LeetCode:: Container With Most Water
热门文章
- Android webview js 调用java方法报错";Uncaught TypeError: Object [object Object] has no method xx
- synchronized关键字详解(一)
- java学习笔记_BeatBox(GUI部分)
- android fragment轻松监听返回键/Fragment中的popupwindow响应返回键隐藏
- Android 微信分享图片
- Ch03 React/JSX/Component 簡介
- 如何成为一名出色的Oracle数据库管理员
- Centos 修改源
- Makefile精髓篇【转】
- Linux下的find命令