我正在使用UITableViewController
并覆盖以下方法,并在用户选择不同的行时尝试启用不同的segues。
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("You selected row #\(indexPath.row)!")
switch indexPath.row {
case 3:
performSegue(withIdentifier: "segue3", sender: self)
case 8:
performSegue(withIdentifier: "segue8", sender: self)
default:
break
}
}
但实际上,这种方法永远不会被调用,而且当我选择一行时,打印输出永远不会出现。
我确实启用了单选,启用了用户交互并将委托和数据源设置为控制器本身(使用UITableViewController
时自动设置,对吗?)
我使用的是静态单元格,默认为UITableViewCell
。视图控制器为UITableViewController
。
更新:
我尝试替换:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: IndexPath)
使用:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
这也不起作用。
答案 0 :(得分:4)
for swift 3
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
//your code...
}
并确保您的tabeView single selection
属性被选中..
答案 1 :(得分:2)
由于您使用UITableViewController
override
函数。否则,如果您在ViewController
中使用tableView,请确保将delegate
设置为ViewController
类。
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("You selected row #\(indexPath.row)!")
switch indexPath.row {
case 3:
performSegue(withIdentifier: "segue3", sender: self)
case 8:
performSegue(withIdentifier: "segue8", sender: self)
default:
break
}
}
答案 2 :(得分:1)
答案 3 :(得分:0)
好的,我看到你的代码。您正在尝试打印字符串并同时进行segue。但是你选择了哪个对象。它应该是一个数组或其他示例:
Var array[“Swift”, “IOS”]
DidSelect{
Switch: array[indexpath.row]
Case 3:
Print(“ u selected /(indexpath.row)”)
PerformSegue.........
Case 4 and so on.....
答案 4 :(得分:-1)
可能有几个原因
tableView.allowsSelection = false //must be true
cell.isUserInteractionEnabled = false //must be true