簡體   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