第一个视图控制器:

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.

}

}

最新文章

  1. 网页缩放对 FLASH的影响
  2. 小技巧-a标签去除蓝圈
  3. java 格式化代码 不进行换行
  4. c++ g++3.4.5 g++4.8.2 由编译器引起的编译异常
  5. poi-3.11-beta2-20140822.jar操作excel方法
  6. yii2的安装使用
  7. JSP的优势与劣势浅析
  8. [转]Laravel 4之验证
  9. 关于const限定符
  10. 超人学院Hadoop大数据技术资源分享
  11. 自写jquery网页回到顶部效果,渐隐图标,引用js文件就可以
  12. [js高手之路]Node.js模板引擎教程-jade速学与实战4-模板引用,继承,插件使用
  13. Xcode中Objc动态调用方法同时避免警告的几个办法
  14. MYSQL一键安装
  15. finereport报表--动态格间运算 一
  16. sql 日常使用记录
  17. yii2.0 curd操作
  18. Linux的用户管理(基础篇)
  19. 1. RNN神经网络模型原理
  20. C++LeetCode:: Container With Most Water

热门文章

  1. Android webview js 调用java方法报错"Uncaught TypeError: Object [object Object] has no method xx
  2. synchronized关键字详解(一)
  3. java学习笔记_BeatBox(GUI部分)
  4. android fragment轻松监听返回键/Fragment中的popupwindow响应返回键隐藏
  5. Android 微信分享图片
  6. Ch03 React/JSX/Component 簡介
  7. 如何成为一名出色的Oracle数据库管理员
  8. Centos 修改源
  9. Makefile精髓篇【转】
  10. Linux下的find命令