gpt4 book ai didi

ios - 如何在 UITableView (Swift) 中创建可点击的单元格

转载 作者:行者123 更新时间:2023-11-29 05:38:57 24 4
gpt4 key购买 nike

我正在开发一个个人项目,我想让 UITableView 中的单元格可单击,这样当它们被按下时,它们会转到下一个 View ,并在按下它们时从单元格中传递信息。

我尝试查看其他演示如何执行此操作的指南和视频,但它们都已过时。对我来说,一个看起来很有希望但最终没有起作用的函数是引用某个“didSelectRowAt”函数,但我无法让它起作用。

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as!
CandidateTableViewCell
if (indexPath.row >= candidateCells.count){
print("???")
candidateCells.append(cell)
print("Strange error")
}
tableView.delegate = self
cell.CandidateName?.text = candidatesNames[indexPath.item]
cell.CandidatePos?.text = candidatesPositions[indexPath.item]
//cell.candidateButton.tag = indexPath.row
cell.CandidateName.sizeToFit()
cell.CandidatePos.sizeToFit()
print(candidateCells)
print(indexPath.row)
print(candidateCells.count)
print(indexPath.row >= candidateCells.count)
candidateCells[indexPath.item] = cell
return cell

}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "Segue", sender: Any?.self)
}

我期望发生的是该单元格将变得可点击,并且当单击该单元格时,它会将我发送到应用程序中的下一页,但是当单击时,什么也没有发生。该单元格不会突出显示,并且不会发生转场。非常感谢您的所有建议!

最佳答案

如果你想将信息传递到下一个单元格,我通常避免使用 Segue,并使用重用标识符设置 ViewController。通过这样做,您可以更轻松地传递信息。例如

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

let vc = self.storyboard?.instantiateViewController(withIdentifier: "YOURRESUEIDENTIFIER") as! YOURVIEWCONTROLLERCLASS
vc.infoToPass = cellData[indexPath.row]
DispatchQueue.main.async {
self.navigationController?.pushViewController(vc, animated: true)
}

}

您的另一个选择是实现 shouldPerformSegueWithIdentifier() 方法,以便正确设置数据。您将单击单元格,该单元格将调用 performSegue 函数,该函数将调用 shouldPerformSegueWithIdentifier,您可以在其中设置数据并返回 true

关于ios - 如何在 UITableView (Swift) 中创建可点击的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56756852/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com