UITableview函数“ DidselectRowAt”显示给不同的目标viewcontroller

时间:2018-10-31 09:48:42

标签: ios swift uitableview tableview

我有一个表格视图,我使用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)
    }

}

2 个答案:

答案 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)
        }
    }
}