Функция UITableview "DidselectRowAt" показывает другой целевой view-контроллер - PullRequest
0 голосов
/ 31 октября 2018

У меня есть таблица, и я использую 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 голосов
/ 31 октября 2018

Хорошей практикой является выполнение любых действий пользовательского интерфейса в главной очереди,

и также лучше использовать (переключать регистр) вместо (если еще), чтобы уменьшить сложность вашего кода.

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)
        }
    }
}
0 голосов
/ 31 октября 2018

Ошибка новичка. Вы должны использовать &&, а не ||.

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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...