В моем приложении у меня есть контроллер представления, который я представляю модально. В этом представлении контроллер имеет табличное представление. Всякий раз, когда пользователь делает выбор в представлении таблицы, я отклоняю контроллер представления.Отклонить modal view controller замерзает приложение раз в то время, swift 3
Проблема в том, что иногда диспетчер представлений не увольняется или увольняется после долгой задержки (5-7 секунд), даже если вызывается функция увольнения.
Вот мой код:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
if tableView == self.quarterTableView
{
self.delegate?.modalViewController(modalVC: self, dismissedWithValue:self.quarterPeriods[indexPath.row])
}
else if tableView == self.monthTableView
{
self.delegate?.modalViewController(modalVC: self, dismissedWithValue: self.monthPeriods[indexPath.row])
}
Print("didSelectRowAt dismiss")
self.dismiss(animated: true) {
Print("finished")
}
}
Любая помощь высоко ценится.
EDIT:
Я решил проблему с помощью:
DispatchQueue.main.async
{
self.dismiss(animated: true) {
DDLogDebug("finished")
}
}
Есть ли вред от этого?
Eugene, вам не нужно называть его в основном блоке отправки, если только вы не вызываете увольнение из фоновой очереди (по какой-то причине неизвестно) Попробуйте распечатать Thread.isMainThread в исходном коде и посмотреть, что он говорит – Chris