【问题标题】:UITableview function "DidselectRowAt" show to different target viewcontrollerUITableview 函数“DidselectRowAt”显示到不同的目标视图控制器
【发布时间】:2018-10-31 09:48:42
【问题描述】:

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

}

【问题讨论】:

  • if indexPath.row != 0 && indexPath.row != 1 AND 不是 OR
  • 你的问题不清楚
  • @RakeshaShastri - 为什么不if indexPath.row > 1 { // continue your work
  • @Anbu.karthik 这也很好。我指出了为什么当前代码不起作用。
  • guard indexPath.row > 1 else { return } let vc = ViewController() self.navigationController?.pushViewController(vc, animated: true)

标签: ios swift uitableview tableview


【解决方案1】:

菜鸟失误。你应该使用&& 而不是||

if indexPath.row != 0 && indexPath.row != 1 {
    let vc = ViewController()
    self.navigationController?.pushViewController(vc, animated: true)
}

或者像 @Anbu.karthik 在 cmets 中指出的那样,更简单、更不容易混淆的方式。

if indexPath.row > 1 {
    let vc = ViewController()
    self.navigationController?.pushViewController(vc, animated: true)
}

【讨论】:

  • 这里也可以使用“,”分隔符来代替 &&
  • @LloydKeijzer 哦,是的,那也是。感谢那。 :)
  • 谢谢。对不起,我是初学者。
  • @JimmyLee 我明白了。当我开始时,我犯了同样的错误。当您将语音直接翻译成代码时,就会发生这种情况。
  • @RakeshaShastri - 欣赏
【解决方案2】:

最好在主队列上执行任何 UI 操作,

而且最好使用 (switch case) 而不是 (if else) 来降低代码的复杂性。

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

【讨论】:

  • @LloydKeijzer 是的,可能任何 UI 对象都将在主队列中,但正如我所提到的,在主队列中执行此类导航是一个好习惯。
猜你喜欢
  • 1970-01-01
  • 2012-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-12
  • 2012-02-17
  • 1970-01-01
相关资源
最近更新 更多