大佬教程收集整理的这篇文章主要介绍了swift代理传值,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
视图之间传值有几种方式,今天暂时写一下代理传值 ,后更新
开发平台 : 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 UIKit import AVFoundation class 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)" } }
加入刚刚在视图二绑定类声明的协议 。实现方法
class ViewController: UIViewController,chAnnelProtocol { }
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完整代码是
@H_673_86@import UIKit class ViewController: UIViewController,sender: AnyObject?) { var ChanleC:secondView = segue.desTinationViewController as! secondView ChanleC.delegate = self } func onChangChAnnel(chAnnelnumber: int) { label.text = "\(chAnnelnumber)" } }
以上是大佬教程为你收集整理的swift代理传值全部内容,希望文章能够帮你解决swift代理传值所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。