0

Попробуйте следовать за мной по изображению ниже. ViewController толкает NavController A модально, который в свою очередь, показывает ViewController A через ViewController F как показывают перетекает. Причина этого в том, что мне нужен UINavigationBar, чтобы идти туда и обратно между разными UIViewControllers. Но в какой-то момент в этой линии взаимодействия вы можете нажимать еще одну линию взаимодействия навигации, начиная с ViewController B до navController B. Они оба будут в конечном итоге на ViewController F, но с немного отличающимися данными. Когда я достигаю ViewController F, и я все закончил с этим UIViewController, я хотел бы вернуться к ViewController A мгновенно, не увидев несколько анимаций увольнения.Отклонить несколько модальных видов с несколькими навигационными контроллерами

Для этого я использовал широкий диапазон различных строк кода, но все они имеют одну и ту же проблему. Я могу заставить их увольнять штраф, поэтому я заканчиваю на ViewController A. Но когда я использовал линию взаимодействия с использованием NavController B будет анимировать увольнение ViewController F, но все равно будет ViewController F за этим увольнением, и когда анимация делается это мерцает прочь и я в конечном итоге на ViewController A. В основном, похоже, есть еще один ViewController F за тем, который я увольняю, но нет (я проверил 3D-просмотр в Xcode).

Я не могу исправить это. Я попытался удалить navController B, и он отлично работает, я вижу только 1 анимацию и заканчиваю на ViewController A без проблемы, описанной выше, но я должен иметь этот navController B. Проще говоря, кажется, проблема возникает при использовании нескольких UINavigationControllers с модальными видами.

Код уволить: ViewControllerA.dismissViewControllerAnimated(true, completion: nil) enter image description here

ответ

0

То, что я, наконец, в конечном итоге делать было проверить погоду в PresentingViewController на ViewController F был ViewController или нет, так как если вы прошли через ViewController G PresentingViewController будет ViewController B. И в ViewController F Сначала я отклонил переднюю модальную презентацию без анимации, а затем вторую с анимацией. Все выглядит хорошо.

if let _ = presentingViewController as? ViewControllerA { 
    view.window?.rootViewController?.dismissViewControllerAnimated(true, completion: nil) 

} else { 
    dismissViewControllerAnimated(false, completion: nil) 
    view.window?.rootViewController?.dismissViewControllerAnimated(true, completion: nil) 
} 

view.window?.rootViewController?.dismissViewControllerAnimated(true, completion: nil) начнет отклоняя все модальности образуют очень rootViewController. Просто добавление двух dismissViewControllerAnimated() после друг друга в else -clause не будет работать.

0

Я хотел бы попробовать, чтобы избежать представления модальный вид на модальное зрения. Подумайте о том, чтобы нажать View Controller G из контроллера просмотра B в тот же поток навигации, а затем представить его модально. Это позволит вам всегда отклонять только один навигационный поток NavController А.

+0

Да, в соответствии с нашими дизайнерами, которые сейчас не являются опцией. Поэтому я как бы должен это исправить. – ClockWise

Смежные вопросы