Unwind Segue от Modal/Popover, приводящий к несбалансированным вызовам, чтобы начать / закончить переходы появления
У меня есть следующие настройки:
Nav Controller -> VC1 -Push -> VC2 -PopOver или Модальный переход -> VC3.
VC3 возвращается к VC1.
Когда Segue от VC2 до VC3 имеет PopOver и Modal, размотка заканчивается предупреждением: несбалансированные вызовы, чтобы начать / закончить переходы внешнего вида для UIViewController"
Если Segue от VC до VC нажат, предупреждение исчезло.
Любая идея, как избавиться от предупреждения или почему оно даже показывает?
2 ответа
Это ошибка. Игнорируйте это (или, если вы хотите быть хорошим гражданином, отправьте отчет об ошибке в Apple).
Я смог воспроизвести вашу проблему и найти решение!
Было бы здорово, если бы логика раскрутки позаботилась об этом. Может быть, это ошибка, а может и нет. В любом случае, решение состоит в том, чтобы сделать VC2 (контроллер, у которого есть всплывающее окно) целью перемотки, затем подождать, пока он не появится, прежде чем вызвать навигационный контроллер. Это гарантирует, что анимация перемотки (всплывающее окно) имеет достаточно времени для завершения, прежде чем двигаться дальше назад. Даже с отключенной анимацией все равно придется ждать, иначе вы получите ошибку.
Ваш код для VC2 должен быть следующим. (Swift)
class VC2: UIViewController {
private var unwind = false
@IBAction func unwindToVC1(segue:UIStoryboardSegue) {
unwind = true
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
if unwind {
self.navigationController?.popViewControllerAnimated(false)
}
}
}