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

标签 ios swift uitableview delegates protocols

我通过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/

相关文章:

javascript - 错误 = "TypeError: Object [object Object] has no method ' addUnique'\n 在 main.js :33:12"; Cloud code parse. com

ios - 防止两次推送到下一个 View Controller

ios 7 - 自定义 UIMenuItem 不适用于 TableViewCell

ios - 在 Master-Detail 应用程序中为 Master/Detail View Controller 重用 UIViewController(带有 UITableView)?

ios - 使用 Alamofire 上传图像时崩溃

uitableview - 表格单元格快速显示 NSMutableArray 的第一个索引数据

ios - 处理 UIImage 事件动画?

ios - 使用数组在 UITableView 中具有不同标签颜色的不同单元格

ios - 在多个 View 中使用 SWReveal

ios - 哪里是放置 GET 请求以及在 ViewController 中调用 init 函数的最佳位置