TableView DidSelectRowAt () задержка - PullRequest
0 голосов
/ 04 января 2019

Здравствуйте, я на самом деле использую таблицу в своем приложении.У меня есть эти строки кода, которые переключаются с VC на мать, и он прекрасно работает везде:

 let vue = MAINSTORYBOARD.instantiateViewController(withIdentifier: "accueil") as! Accueil
self.present(vue, animated: true, completion: nil)

В моем tableView я использую функцию DidSelectRowAt (это выполняется, когда я нажимаю на строку / ячейку), чтобысделать это (переключатель ВК) Но вы уже поняли, когда я нажимаю на это, но с задержкой.Эта задержка может иногда быть 1-2 с, иногда до 12, это случайно.Это странно.Я указываю функции выше, работать мгновенно с кнопками и другими.это код (я пишу только важные вещи):

class Horaire: ViewController, UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let vue = MAINSTORYBOARD.instantiateViewController(withIdentifier: "accueil") as! Accueil
        self.present(vue, animated: true, completion: nil)

}

и другой класс:

class Accueil: ViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        print("viewDidLoad executed")
    }
}

Поэтому, когда я нажимаю на ячейку моего табличного представления, он сразу же печатает "viewDidLoadвыполнено ", но переключатель VC выполняется только через несколько случайных секунд.Почему у меня такая задержка и как ее исправить?это не использует segue

1 Ответ

0 голосов
/ 04 января 2019

Первое, что пришло мне в голову, это поставить блок в основную очередь.Я знаю, что didSelectRowAt должен работать в потоке пользовательского интерфейса, но я видел в Интернете пару жалоб на эту самую вещь.Выглядит как ошибка для меня.

class Horaire: ViewController, UITableViewDataSource, UITableViewDelegate {
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        DispatchQueue.main.async{
        let vue = MAINSTORYBOARD.instantiateViewController(withIdentifier: "accueil") as! Accueil
        self.present(vue, animated: true, completion: nil)
        }
    }
}

Вы можете видеть по какой-то странной причине, что это работает для этих людей: https://github.com/HeroTransitions/Hero/issues/79

...