swift代理传值
来源:互联网 发布:ipad下不了软件 编辑:程序博客网 时间:2024/04/28 10:14
视图之间传值有几种方式,今天暂时写一下代理传值 ,后更新
开发平台 : mac 10.10.2
编译器 :xcode6.3 (6D532l)
运行平台 : xcode iphone 5s虚拟机
所谓代理传值,就是通过delegate 来实现。设置两个视图.通过代理把第二张的视图的某值传给第一张视图
UI如图。给第二章视图创建并绑定一个类
在第二个视图类里声明一个协议
因为之前写的是一个测试,所以命名还是有点坑的protocol channelProtocol{ func onChangChannel(channelNumber:Int)}
在第二个视图类里添加协议的代理
var delegate:channelProtocol?
delegate?.onChangChannel(rowOfTable) //rowOfTable 之前声明的便变量
第二个视图类的完整代码为
import UIKitimport AVFoundationclass ViewController: UIViewController,channelProtocol { @IBOutlet weak var label: UILabel! var audioPlayer : AVAudioPlayer! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { var ChanleC:secondView = segue.destinationViewController as! secondView ChanleC.delegate = self } func onChangChannel(channelNumber: Int) { label.text = "\(channelNumber)" }}
下面开始写ViewControler 类
加入刚刚在视图二绑定类声明的协议 。实现方法
class ViewController: UIViewController,channelProtocol {}
重写 prepareForSegue(segue: UIStoryboardSegue, sender:AnyObject?) 方法,这个也是代理传值的重点
overridce func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { var ChanleC:secondView = segue.destinationViewController as! secondView ChanleC.delegate = self }
实现协议的方法
func onChangChannel(channelNumber: Int) { label.text = "\(channelNumber)" }
ViewController.swift完整代码是
import UIKitclass ViewController: UIViewController,channelProtocol { @IBOutlet weak var label: UILabel! var audioPlayer : AVAudioPlayer! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { var ChanleC:secondView = segue.destinationViewController as! secondView ChanleC.delegate = self } func onChangChannel(channelNumber: Int) { label.text = "\(channelNumber)" }}
完整项目代码托管到coding https://coding.net/goooooooofy/delegateGetValue.git
更多文章。访问 个人网站 http://www.goofy.ga
0 0
- swift代理传值
- swift代理传值
- swift -NavigationController,代理传值
- Swift 传值之代理传值
- Swift语言实现代理传值
- Swift语言实现代理传值
- swift代理传值的实现
- Swift 协议代理传值(十)
- Swift语言实现代理传值
- Swift代理方法反向传值
- swift 用协议实现代理传值功能
- swift 用协议实现代理传值功能
- swift 用协议实现代理传值功能
- Swift语言实现代理传值(RegisterViewController和LoginViewController)
- 【swift_4】swift之代理传值(delegate的用法)
- swift 用协议实现代理传值功能
- Swift 协议代理的使用和传值
- Swift基础之代理与传值(一)
- 日拱一卒(三)
- 百度地图开发(五)之公交信息检索 + 路线规划
- unity 基本函数整理[4_Unity脚本 + 5_游戏元素的设计]
- C/C++预编译指令
- 超全面的.NET GDI+图形图像编程教程
- swift代理传值
- 多态性1
- 预言~~~~
- Windows驱动开发(一)——环境搭建
- HDU2544 最短路 Bellman-Ford实现
- swift学习笔记
- C编译器剖析_前言
- 苹果所有常用证书
- Android属性动画