繁体   English   中英

关闭 Viewcontroller 时传递数据

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

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