我通过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
调用它们?
最佳答案
您应该创建一个具有委托(delegate)函数的协议(protocol),如下所示:
protocol ClassDelegate: class {
func doSomething()
}
在你的 A 类中,你应该这样实现该协议(protocol):
class A: ClassDelegate {
inAFunction(){
ViewController1.delegate = self
}
func sendData(data: String) {
self.data = data
}
}
在 viewController 中,您想要将数据发送到 A 类,您应该引用 A 类并使用委托(delegate)变量:
class ViewController1: UIViewController {
weak var delegate: ClassDelegate?
func clickHere(){
delegate.sendData()
}
}
当您使用 clickHere 函数时,它会触发 C 类 sendData 函数。
尝试一下;D
关于ios - 将数据从没有 Segue 的 VC 传递到非 VC 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48265674/