Быстрая проблема с отправкой данных другому ViewController - PullRequest
0 голосов
/ 07 февраля 2020

Переменная cards во втором ViewController должна обновляться в первом V C при нажатии кнопки.
Я проверил отправку данных с первого V C с печатью данных, и он работает хорошо.
Вот код:

@IBAction func btnTapped(_ sender: Any) {
    let mainStoryboard = UIStoryboard(name: "Main", bundle: Bundle.main)
    let secondVC = (mainStoryboard.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController)
    for card in setsOfCardsByLevel {
        cardVC.cards.append(card)
    }
    print("Number of cards to send - \(cardVC.secondVC.count)") //PRINTS RIGHT NUMBER
    presentVC("SecondViewController") //WORKS FINE
}


Возможно, вам не нужен этот метод ниже, но я поставлю его на всякий случай:

func presentVC(_ VC_Name: String) {
    guard let myVC = self.storyboard?.instantiateViewController(withIdentifier: VC_Name) else { return }
    let navController = UINavigationController(rootViewController: myVC)
    navController.modalPresentationStyle = .fullScreen
    self.navigationController?.present(navController, animated: true, completion: nil)
}

ПРОБЛЕМА: Когда я печатаю cards во втором ViewController, они пусты (count = 0). Как?
РЕДАКТИРОВАТЬ: В ожидании ответа на StackOverflow я изменил presentViewController на pushViewController, и печать secondVC показывает правильный номер. Я в замешательстве.

1 Ответ

0 голосов
/ 07 февраля 2020

Ваша проблема в вашем настоящем методе C. Сначала в вашем методе btnTapped вы создаете экземпляр своего второго viewController и присваиваете свои карты, снова в вашем методе presentVC создаете экземпляр другого контроллера, и он не имеет отношения к первому, который вы определили в своей переменной btnTapped, и переменная cards не назначена. Для решения вы можете передать ваш второй V C в качестве параметра вашему нынешнему V C, а не названию раскадровки

...