Как избежать сбоя приложения с помощью TabView внутри NavigationView при навигации назад ios 13 SwiftUI

Я использую TabView внутри NavigationView, но мое приложение вылетает, когда я пытаюсь перейти назад, оно показывает это сообщение об ошибке Thread 1: EXC_BAD_ACCESS (code = 2, address = 0x16ad5bff0) в классе AppDelegate. На устройстве iOS 14 он работает нормально, но вылетает на iOS 13. Я думаю, что это проблема navigationView в iOS 13. Я ищу альтернативу в iOS 13 и избегаю сбоев.

PS: Я использую xcode 12.


person Sokina    schedule 22.12.2020    source источник


Ответы (1)


Вложение TabView внутри NavigationView было проблемой с момента запуска SwiftUI. Самый простой способ решения этой проблемы - создать слои просмотра View. Взгляните на этот ответ, чтобы получить представление о том, как они работают.

Чистый вход в SwiftUI, регистрация, зарегистрировать поток, возможно ли это?

В SwiftUI вы можете многое сделать с помощью слоев, которые кажутся естественными. Проверьте это и дайте мне знать, если у вас возникнут вопросы!

person BJ Beecher    schedule 22.12.2020
comment
Я в замешательстве, не могли бы вы объяснить, пожалуйста? - person Sokina; 22.12.2020
comment
По сути, вы создаете представление оболочки в swiftui, которое делает что-то на более высоком уровне в иерархии представлений, чем переданный ему контент. Это дает вам возможность контролировать, когда будет отображаться следующий слой (или переданный ему контент). Вы также можете передать важную информацию, созданную в этой оболочке, представлениям, расположенным ниже в иерархии представлений, через среду или что угодно. Это дает вам возможность делать много вещей, например, показывать наложенный вид или возвращаться к экрану авторизации. Вы действительно обладаете большой гибкостью. - person BJ Beecher; 23.12.2020
comment
у меня это не работает. См. эту ссылку [stackoverflow.com/questions/63074464/ это мой главный вопрос. У меня есть решение, но когда я обновляю xcode, я больше не могу вернуться к первому представлению. Любая идея ? - person Sokina; 23.12.2020