将数据发送到另一个ViewController的快速问题

问题描述 投票:0回答:1

ViewView中的第二个变量cards应该在buttonClick的第一个VC中更新。我用打印数据测试了从第一个VC发送的数据,并且效果很好。这是代码:

@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)
}

问题:当我在secondViewController中打印cards时,它们为空(计数= 0)。怎么样?编辑:在等待关于StackOverflow的答案时,我将presentViewController更改为pushViewController,并在secondVC中打印显示正确的数字。我很困惑。

ios arrays swift uiviewcontroller viewcontroller
1个回答
0
投票

您的问题出在您的presentVC方法中。首先在btnTapped方法中实例化第二个viewController并配置卡,再次在presentVC方法中实例化另一个控制器,它与您在btnTapped中定义的第一个控制器无关,并且cards变量未分配。对于解决方案,您可以将secondVC作为参数传递给presentVC,而不是情节提要的名称]

© www.soinside.com 2019 - 2024. All rights reserved.