Передача данных при увольнении Viewcontroller - PullRequest
0 голосов
/ 11 марта 2020

Я хочу передать данные в контроллер представления root, который равен ViewController после закрытия предыдущего, я решил использовать делегирование для решения этой проблемы следующим образом: Схема:

ViewController -> SearchViewController

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 после увольнения?

Ответы [ 2 ]

1 голос
/ 11 марта 2020

Попробуйте

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
   if let searchVC = segue.destination as? SearchViewController {
      searchVC.delegate = self
}
1 голос
/ 11 марта 2020

Заменить

 let vc2 = SearchViewController()
 vc2.delegate = self

на

 if let vc2 = segue.destination as? SearchViewController {
    vc2.delegate = self
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...