我有一个表格视图,我使用didSelectRowAtIndexPath
来过滤indexpath
到哪个viewController
。
我尝试使用以下代码,但失败了。
我怎么了
谢谢。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("index:", indexPath.row)
if indexPath.row != 0 || indexPath.row != 1 {
//When index = 0 or 1, it also push to next vc.
//I don't want index 0 or 1 to push next vc.
let vc = ViewController()
self.navigationController?.pushViewController(vc, animated: true)
}
}
答案 0 :(得分:3)
菜鸟错误。您应该使用&&
而不是||
。
if indexPath.row != 0 && indexPath.row != 1 {
let vc = ViewController()
self.navigationController?.pushViewController(vc, animated: true)
}
或者就像@ Anbu.karthik在评论中指出的那样,这是一种更简单且更少混乱的方式。
if indexPath.row > 1 {
let vc = ViewController()
self.navigationController?.pushViewController(vc, animated: true)
}
答案 1 :(得分:0)
在主队列上执行任何UI操作都是一个好习惯,
并且最好使用(切换大小写)而不是(如果没有)来减少代码的复杂性。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
switch indexPath.row {
case 0, 1 :
break
default :
let vc = ViewController()
DispatchQueue.main.async {
self.navigationController?.pushViewController(vc, animated: true)
}
}
}