Swift: передача данных из контроллера представления в контроллер навигации - PullRequest
0 голосов
/ 17 мая 2019

Я хочу передать данные из контроллера представления в другой, но между ними есть контроллер Navigation, поэтому вместо функции "executeSegue" есть функция "present".

 private func IniciarMainAdmin(){
    let mainAdmin = UIStoryboard(name: "Main", bundle: Bundle.main)
    guard let mainAdminNVC = mainAdmin.instantiateViewController(withIdentifier: "NCMainAdmin") as? NCMainAdmin else{
        return
    }
    present(mainAdminNVC, animated: true, completion: nil)
}

Я пробовалс этим кодом, но он не работал для меня:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let destViewController = segue.destination as! NCMainAdmin
        let secondViewcontroller = destViewController.viewControllers.first as! NCMenuAdmin
        secondViewcontroller.adminUserData = "This is a test"
}

Примечания:

  • NCMainAdmin - контроллер навигации
  • NCMenuAdmin - первый контроллер представленияНавигационный контроллер

Спасибо!

1 Ответ

1 голос
/ 17 мая 2019

Чтобы ваш код prepare(for активировался, вам нужно создать переход от отправителя vc к навигации, поэтому либо

 private func IniciarMainAdmin(){
    let mainAdmin = UIStoryboard(name: "Main", bundle: Bundle.main)
    guard let mainAdminNVC = mainAdmin.instantiateViewController(withIdentifier: "NCMainAdmin") as? NCMainAdmin else{
        return
    }
    let first = mainAdminNVC.viewControllers.first as! NCMenuAdmin
    first.adminUserData = "This is a test"
    present(mainAdminNVC, animated: true, completion: nil)
}

OR

self.performSegue(withIdentifier:"id",sender:nil)

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let destViewController = segue.destination as! NCMainAdmin
        let secondViewcontroller = destViewController.viewControllers.first as! NCMenuAdmin
        secondViewcontroller.adminUserData = "This is a test"
}
...