![swift基础学习传值[属性传值、代理、block代码块、等],第1张 swift基础学习传值[属性传值、代理、block代码块、等],第1张](/aiimages/swift%E5%9F%BA%E7%A1%80%E5%AD%A6%E4%B9%A0%E4%BC%A0%E5%80%BC%5B%E5%B1%9E%E6%80%A7%E4%BC%A0%E5%80%BC%E3%80%81%E4%BB%A3%E7%90%86%E3%80%81block%E4%BB%A3%E7%A0%81%E5%9D%97%E3%80%81%E7%AD%89%5D.png)
传值:在此之前我们先定义两个视图控制器VIEwController VIEwController01
1.属性传值正向、这里以字符串做例子、其他类型类似:VIEwController->>>VIEwController01
VIEwController:
let vc = VIEwController01()
vc.str ="hello"
self.navigationController?.pushVIEwController(vc,animated:true)
VIEwController01:
class VIEwController01: UIVIEwController {
var str =Nsstring()
overrIDefunc vIEwDIDLoad() {
super.vIEwDIDLoad()
self.vIEw.backgroundcolor =UIcolor.white
print(self.str)
}
overrIDefunc dIDReceiveMemoryWarning() {
super.dIDReceiveMemoryWarning()
// dispose of any resources that can be recreated.
}
}
2.代码块反向传值
VIEwController:
func click() {
let vc =VIEwController01()
vc.callBlock{(value: String?) ->VoID in
print(value)
}
self.navigationController?.pushVIEwController(vc,animated:true)
}
VIEwController01:
首先定义代码块类型:typealias textBlock = (String)->()
然后定义代码块属性:var block:textBlock?
实现代码块
func callBlock(block:textBlock?) {
self.block = block
}
func click() {
if let block = self.block {
block("li01")
}
self.navigationController?.popToRootVIEwController(animated:true)
}
3.delegate反向传值(协议)
VIEwController:首先要继承VIEwController01中的协议giveFirstStrDelegate
func click() {
let vc =VIEwController01()
vc.delegate = self
self.navigationController?.pushVIEwController(vc,animated:true)
}
代理方法
func giveStr(controller: VIEwController01,string: String) {
print(string)
}
VIEwController01:
首先定义个协议
protocol giveFirstStrDelegate:NSObjectProtocol {
func giveStr(controller:VIEwController01,string:String)
}
var delegate:giveFirstStrDelegate?
这些类似与OC中的代理实现
func click() {
if((delegate) !=nil){
delegate?.giveStr(controller:self,string:"hi I am li")
}
self.navigationController?.popToRootVIEwController(animated:true)
}
4.通知中心传值参考OC
5.单列传值也同样参考OC
基本是写过OC的swift都可以很容易上手
总结以上是内存溢出为你收集整理的swift基础学习传值[属性传值、代理、block代码块、等]全部内容,希望文章能够帮你解决swift基础学习传值[属性传值、代理、block代码块、等]所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)