繁体   English   中英

将数据从没有Segue的VC传递到非VC类

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM