大佬教程收集整理的这篇文章主要介绍了swift基础学习传值[属性传值、代理、block代码块、等],大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
传值:在此之前我们先定义两个视图控制器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() {
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() {
delegate?.giveStr(controller:self,String:"hi I am li")
}
self.navigationController?.popToRootViewController(animated:true)
}
5.单列传值也同样参考OC
基本是写过OC的swift都可以很容易上手
以上是大佬教程为你收集整理的swift基础学习传值[属性传值、代理、block代码块、等]全部内容,希望文章能够帮你解决swift基础学习传值[属性传值、代理、block代码块、等]所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。