尝试传递数组及其值以填充表视图控制器

时间:2018-01-08 14:46:14

标签: ios arrays swift4 xcode9

所以我试图从名为configNames的前一个视图控制器传递数组来填充我的表视图控制器(基本上是记分板)

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let destVC: scoreboard = segue.destination as! scoreboard
    destVC.namesTArray = nameArray
    destVC.scoresTArray = scoreArray
}

namesTArray / scoresTarray是在tableview(scoreboard)中创建的数组,并创建了nameArray / scoreArray,并在视图中添加了值控制器。

我尝试通过segues传递数组,但是,当我尝试从要显示的变量调用数据时,数组中的值没有传递并导致崩溃。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您应该将segue从一个控制器提供给另一个控制器。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "SegueName" {
        let detailVC = segue.destination as! scoreboard
        destVC.namesTArray = nameArray
        destVC.scoresTArray = scoreArray
    }
}

答案 1 :(得分:0)

以这种方式尝试

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let destVC = segue.destination as? scoreboard {
        destVC.namesTArray = nameArray
        destVC.scoresTArray = scoreArray
    }
}

现在你没有强行解开变量

tableview会在viewDidLoad之后自动重新加载,因此tableview应该在没有任何其他工作的情况下填充。

如果您遇到任何崩溃,最好提供行号,如果可能的话也可以堆栈跟踪,那么解决问题会更容易。

并将scoreboard更改为ScoreBoard。这种命名约定称为套管。

根据您在评论中提供的崩溃'Fatal Error: Index out of range'的说明,如果您认为自己在numberOfRowInSection中传递了错误的数字。

确保nameArrayscoreArray具有相同的计数,并且nameArray.count放在numberOfRowInSection中。