我通过segue将数据从ViewController1
传递到ViewController2
,但如何将数据发送到Class
?这个类不是ViewController。
ViewController1
有一个UIPickerView
来提供数据(字符串)。
字符串将填写ViewController2
所需的网址。
类
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
中创建所有可能的网址,并从ViewController2
调用它们吗?
答案 0 :(得分:0)
您应该创建一个包含委托函数的协议,如下所示:
protocol ClassDelegate: class {
func doSomething()
}
在你的A班中,你应该用这种方式实现这个协议:
class A: ClassDelegate {
inAFunction(){
ViewController1.delegate = self
}
func sendData(data: String) {
self.data = data
}
}
在viewController中,您想要将数据发送到A类,您应该引用A类并使用委托变量:
class ViewController1: UIViewController {
weak var delegate: ClassDelegate?
func clickHere(){
delegate.sendData()
}
}
当你使用clickHere函数时,它会触发Class C sendData函数。
试试吧; D