如何唯一标识 UITableView 中的每个单元格



我有一个UITableView,我正在尝试对另一个viewcontroller进行续集,我需要行号,以便我可以从数组中选择一个字符串,以便我可以在下一个视图控制器中显示此字符串,我现在有此代码。

let tableFrontView = segue.destination as! FCTableFrontViewController
tableFrontView.frontText = path[FlashCardsTableViewCell.init().tag].flashCardFront

FlashCardsTableViewCell.init().tag当前返回一个 int 用于测试目的,尽管我想知道我可以用什么替换它来获取用户选择的行号。 谢谢

你可以这样尝试:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let tableFrontView = segue.destination as! FCTableFrontViewController
let selectedIndexPath = tblView.indexPathForSelectedRow
let selectedRow = (selectedIndexPath?.row)!
print(selectedRow)
}

我假设您正在编写prepare(for:)中显示的代码片段?

如果是这种情况,请转到执行 segue 的位置,这可能是在didSelectedRowAtIndexPath委托方法中。如果没有这样的方法,则应实现它。

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "showTableFrontVC", sender: nil)
}

替换您现在传递的任何内容sender,并将其替换为indexPath.row.

performSegue(withIdentifier: "showTableFrontVC", sender: indexPath.row)

现在在prepare(for:)中,您可以将发件人解包为Int

let tableFrontView = segue.destination as! FCTableFrontViewController
let rowSelected = sender as! Int
tableFrontView.frontText = path[rowSelected].flashCardFront

使用 TableView 的委托方法:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// indetify cell using indexPath.row attribute
}

最新更新