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

时间:2018-01-15 15:10:51

标签: ios swift uitableview delegates protocols

我通过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调用它们吗?

1 个答案:

答案 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