关闭时传递数据 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
}
我想把数据传递给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
}