快速TableView句子错误

时间:2019-06-02 17:32:24

标签: ios swift uitableview

我正在尝试制作一个表格视图,用户可以在其中单击单元格,以便单元格打开一个新的ViewController,该控件将导航栏标题设置为所单击的单元格的标签。
这对我来说真的不起作用,因为当我单击一个单元格时,它会打开一个具有先前单击的单元格值(不是当前单元格值)的视图,然后再次打开一个新视图,其中标题是当前单元格的值。 br /> 我将视图控制器上载到GitHub存储库:https://github.com/SiposPtr/stackoverflow

var selectedValue: String?
var numberOfFileToLoad: Int = 1
let cellak = [
    "Első",
    "Második",
    "Harmadik",
    "Negyedik",
    "Ötödik",
    "Hatodik",
    "Hetedik",
    "Nyolcadik",
    "Kilencedik"
]
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of rows
    return cellak.count
}


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath)
    cell.textLabel?.text = cellak[indexPath.row]
    // Configure the cell...
    return cell
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    selectedValue = cellak[indexPath.row]
    numberOfFileToLoad = indexPath.row + 1
    performSegue(withIdentifier: "gotoSentences", sender: nil)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "gotoSentences"{
        let nextViewController = segue.destination as! ButtonEditViewController
        nextViewController.title = selectedValue
        nextViewController.numberOfFileToLoad = numberOfFileToLoad
    }
}

enter image description here

1 个答案:

答案 0 :(得分:1)

似乎segue执行了两次。如果您有从表视图单元格到下一个视图控制器的segue连接,则选中该单元格后立即执行的segue,然后将调用didSelectRowAt方法。

您可以通过prepare for segue方法获取选定的行,并将选定的数据传递给下一个视图控制器。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "gotoSentences"{
        if let nextViewController = segue.destination as? ButtonEditViewController,
            let indexPath = tableView.indexPathForSelectedRow {
                nextViewController.title = cellak[indexPath.row]
                nextViewController.numberOfFileToLoad = indexPath.row + 1
        }
    }
}