【发布时间】:2017-07-17 02:36:45
【问题描述】:
我为此使用UITableViewController,并覆盖以下方法并尝试在用户选择不同行时启用不同的segue。
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)
这也不行。
【问题讨论】:
-
你设置代理了吗?
-
Xcode 使用的是什么版本?当您说您正在使用
UITableViewController时,您需要覆盖默认实现,这意味着您需要该方法的关键字override。你的更新是否写得不够清楚override。 -
检查delegate是否与viewController连接
-
@OOPer 是的,我应该重写那个方法。
-
根据您接受的答案,您正在使用 Swift 2。您真的不应该再使用它了。您需要升级到 Swift 3,因为 Swift 4 现在处于测试阶段。
标签: ios swift uitableview