我正在处理一个个人项目,我想使UITableView中的单元格可单击,这样,当按下它们时,它们会选择到下一个视图,并在按下时将其单元格中的信息与之一起传递。
我试图查看其他演示如何执行此操作的指南和视频,但是它们都已过时。对我而言似乎表现出希望但并未最终成功的一个参考是某个“ 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。非常感谢您提出的所有建议!
答案 0 :(得分:0)
如果您想将信息传递给下一个单元格,我通常避免使用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