[英]Pass data from a VC without Segue to a non VC Class
我通过segue将数据从ViewController1
传递到ViewController2
,但是如何将数据发送到Class
? 此类不是ViewController。
ViewController1
具有提供数据(字符串)的UIPickerView
。
字符串将完成ViewController2
所需的URL。
类
class A: SendDataFromDelegate {
func sendData(data: String) {
self.data = data
}
var delegate : SendDataFromDelegate?
ViewController1
@IBAction func Picker(_ sender: Any) {
var delegate: SendDataFromDelegate?
delegate?.sendData(data: data)
}
protocol SendDataFromDelegate {
func sendData(data : String)
}
这是一个好方法吗?
还是应该在class
创建所有可能的URL,然后从ViewController2
调用它们?
您应该使用以下委托函数创建协议:
protocol ClassDelegate: class {
func doSomething()
}
在A类中,您应该通过以下方式实现该协议:
class A: ClassDelegate {
inAFunction(){
ViewController1.delegate = self
}
func sendData(data: String) {
self.data = data
}
}
在要向类A发送数据的viewController中,您应该具有对类A的引用,并使用委托变量:
class ViewController1: UIViewController {
weak var delegate: ClassDelegate?
func clickHere(){
delegate.sendData()
}
}
当您使用clickHere函数时,它将触发C类sendData函数。
试试吧; D
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.