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