关闭时传递数据 Viewcontroller

Passing data when dismissing Viewcontroller

我想把数据传递给root view controller,也就是ViewController在前面的dismiss后,我选择使用delegation这样解决这个问题: 方案:

ViewController -> 搜索ViewController

SearchViewController 产生数据并解散

class ViewController: UIViewController, IsAbleToReceiveData {    
@IBAction func addButton_touchUpInside(_ sender: UIButton) {
        performSegue(withIdentifier: "gotoSearchViewController", sender: nil)
    }

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "gotoSearchViewController" {
        let vc2 = SearchViewController()
        vc2.delegate = self
    }
}


func passData(city: cityObject) {
        print(city.cityName)

    }
}

协议声明:

protocol IsAbleToReceiveData: class {
   func passData(city : cityObject)
}

SearchViewController 我有:

weak var delegate: IsAbleToReceiveData?

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let citySelected: cities?
    citySelected = self.citiesQueried[indexPath.row]
    RequestAPI.convertData(city: citySelected!) { (city) in

        self.delegate?.passData(city: city)
    }
    dismiss(animated: true, completion: nil)
}

当我尝试在 ViewController 中的函数中打印数据时,即使在 SearchViewController convertData 方法中返回一个 cityObject,也没有打印任何内容。 解雇后如何将数据传递给ViewController

替换

 let vc2 = SearchViewController()
 vc2.delegate = self

 if let vc2 = segue.destination as? SearchViewController {
    vc2.delegate = self
 }

尝试

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
   if let searchVC = segue.destination as? SearchViewController {
      searchVC.delegate = self
}