Не в состоянии передавать данные между контроллерами представления - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь передать строку sendname в ViewController переменной String finalName в другом контроллере представления, DatabaseTableViewController. Вот мой код в ViewController:

                    self.sendname = self.name.text!
                    let vc = DatabaseTableViewController()
                    print("sending: \(self.sendname)")
                    vc.finalName = self.sendname
                    self.navigationController?.pushViewController(vc, animated: true)
                    let next = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "DatabaseTableViewController") as! DatabaseTableViewController
                    self.present(next, animated: true, completion: nil)

и моя переменная в viewDidLoad в DatabaseTableViewController:

class DatabaseTableViewController: UIViewController {

    var finalName: String? = nil

Мой код правильно печатает sending: Satya, но когда я выведите значение finalName в DatabaseTableViewController, оно все равно даст мне nil. Что мне делать?

Спасибо, Сатья

1 Ответ

0 голосов
/ 16 января 2020

вы присваиваете значение экземпляру, который не представлен

                let vc = DatabaseTableViewController()
                print("sending: \(self.sendname)")
                vc.finalName = self.sendname
                self.navigationController?.pushViewController(vc, animated: true)
                let next = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "DatabaseTableViewController") as! DatabaseTableViewController

вы задали next, что вы не присваиваете данные

 self.present(next, animated: true, completion: nil)

Обратите внимание, если ваш v c существует в раскадровке, затем создайте экземпляр с

 let next = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "DatabaseTableViewController") as! DatabaseTableViewController

, если программно, тогда используйте

 let vc = DatabaseTableViewController()

, поэтому попробуйте

    let vc= UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "DatabaseTableViewController") as! DatabaseTableViewController
   print("sending: \(self.sendname)")
   vc.finalName = self.sendname
   self.navigationController?.pushViewController(vc, animated: true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...