Атрибут словаря UIViewController устанавливается, но равен нулю в viewDidLoad () - PullRequest
1 голос
/ 22 января 2020

Итак, у меня есть ViewController, который переходит к другому при вызове didSelectRowAt. Я перехожу к новому контроллеру представления следующим образом:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let accountInsightsViewController:AccountInsightsViewController = AccountInsightsViewController(nibName: "AccountInsightsViewController", bundle: nil)
    accountInsightsViewController.accountDetailsObjectFromSourceController = self.accountDetailsObjectFromSourceController
   accountInsightsViewController.accountDetailsObjectFromSourceController["accountId"] = self.accountDetailsObjectFromSourceController["accountId"]
    if let navigator = navigationController {
        navigator.pushViewController(accountInsightsViewController, animated: true)
    }

}

Однако в функции viewDidLoad() этого нового контроллера представления атрибут accountDetailsObjectFromSourceController снова становится пустым словарем. Когда я отлаживаю, я ясно вижу, что когда я устанавливаю этот словарь атрибутов в словарь той же структуры, случается, что он правильно устанавливает значение словаря в словарь с 3 парами ключ / значение. Однако, когда navigationController выдвигает этот V C, он падает, потому что этот словарь содержит 0 пар ключ / значение внутри нового V C s viewDidLoad()

. Может ли кто-нибудь сказать мне, почему значение устанавливается, но когда он переходит к этому V C, словарь становится пустым? Контроллер представления представлен в виде собственного файла XIB и файла V C Swift. Очевидно, я поступаю правильно, и он достигает viewDidLoad(), но почему он не принимает значение, которое я установил прямо перед pushViewController?

1 Ответ

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

Интересный вопрос. Это было решено путем первого жесткого кодирования значений словаря. В этом случае возникла еще одна проблема, которая помешала появлению V C. Это было решением проблемы: Загруженный кончик, но выход 'view' не был установлен

Как только V C загружен жестко закодированными значениями, он не "сбрасывал" словарь, который был передан до pushViewController. Проблема возникла из-за попытки перенести пользовательский интерфейс V C из раскадровки в отдельный XIB

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...