[英]Passing data when dismissing Viewcontroller
我想把数据传递给根视图控制器,也就是前一个ViewController
后的ViewController
,我选择使用delegation的方式解决这个问题:Scheme:
视图控制器 -> 搜索视图控制器
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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.