Передача данных между контроллерами представления в Swift не работает - PullRequest
0 голосов
/ 03 июля 2018

Не могли бы вы помочь мне? Данные (itemStr) не передаются, хотя приведенный ниже код кажется правильным, и я уже проверил аналогичные вопросы по стеку

1-й контроллер вида (BookTableViewController.swift):

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
      if let SecondController = segue.destination as? BookViewController {
            SecondController.itemStr = "43"        
        }        
}

2-й контроллер вида (BookViewController.swift):

var itemStr = String()

override func viewDidLoad() {
        super.viewDidLoad()

        itemNoLabel?.text = "BNo:" + itemStr + " GYE"       
}

Когда я запускаю программу, itemStr имеет значение nil. Я не получаю "43"?

Заранее спасибо за вашу помощь. Guven

1 Ответ

0 голосов
/ 04 июля 2018

У вас проблемы, потому что вы на самом деле не представляете UIViewController, как вы думаете. Вы действительно представляете это UINavigationViewController.

Но вы все равно можете сделать что-то вроде этого:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
      if let navigationViewController = segue.destination as? UINavigationController {

            guard let secondViewController = navigationViewController.topViewController as? BookViewController else { return }
            secondViewController.itemStr = "43"        
        }        
}
...