Я работал над приложением с логином, и после логина были перечислены категории. И под каждой категорией есть несколько пунктов, перечисленных по горизонтали. Дело в том, что после входа в систему появляется главная страница, и все в порядке. Когда вы нажимаете на элемент, он переходит на подробный экран, но при попытке вернуться он просто падает. Я обнаружил этот поток Почему мое приложение SwiftUI аварийно завершает работу при перемещении назад после размещения `NavigationLink` внутри` navigationBarItems` в `NavigationView`?но я не мог решить мою проблему. Поскольку мой проект стал сложным, я просто хотел попрактиковаться в навигации на swiftui и создал новый проект. Кстати я скачал последнюю версию XCode 11.3. Я написал простой код следующим образом:
NavigationView{
NavigationLink(destination: Test()) {
Text("Show Detail View")
}
.navigationBarTitle("title1")
И представление Test () выглядит следующим образом:
import SwiftUI
struct Test: View {
var body: some View {
Text("Hello, World!")
}
}
struct Test_Previews: PreviewProvider {
static var previews: some View {
Test()
}
}
Как видите, это действительно просто. Я также пробовал подобные примеры в интернете, но это не работает так, как предполагается. Когда я запускаю проект, я нажимаю на навигационную ссылку, и она переходит к представлению Test (). Затем я нажимаю кнопку «Назад», и она переходит на главную страницу. Однако, когда я нажимаю на навигационную ссылку во второй раз, ничего не происходит. Навигационная ссылка работает только один раз и после этого ничего не происходит. Он не перемещается, он не выдает никакой ошибки. Я новичок в swiftui и все отлично, но навигация. Я пробовал много примеров и предлагал решения в Интернете, но, кажется, ничто не решает мои проблемы.
источник
Ответы:
[ОБНОВЛЕНИЕ] 12 февраля 2020 г. - Я проверил эту проблему в бета-версии Xcode 11.4 и обнаружил, что эта проблема была решена.
Я столкнулся с той же проблемой в своем проекте, когда тестировал ее в симуляторе XCode. Однако, когда я запустил приложение на реальном устройстве (iPhone X с iOS 13.3), оно
NavigationLink
работало совершенно нормально. Итак, это действительно похоже на ошибку Xcode.источник
Симулятор 11.4: эта проблема была исправлена
Вам необходимо сбросить
isActive
значение по умолчанию во втором представлении. Работает на устройствах и эмуляторах.источник
onDisappear
будет вызван после того,isActive
как ложь, поэтому NavigationView не будет работать должным образом. Это временное решение для эмуляторов только потому, что NavigationView корректно работает на устройствах. В предыдущих версиях эмуляторов NavigationView работал, надеюсь, это будет исправлено в будущем эмуляторе.Предположительно, это будет решено, когда Apple исправит связанную ошибку, которая не позволяет выбрать 13.3 в качестве цели развертывания. .
Я испытываю ту же проблему, что и все остальные. Эта проблема присутствует в симуляторе и предварительном просмотре под управлением 13.2, но исправлена при развертывании на моем собственном устройстве под управлением 13.3.
источник
Как сказал @ Александр Грабовский, это похоже на ошибку Xcode 11.3, я столкнулся с той же проблемой, вы должны понизить версию или использовать какой-то обходной путь, например пользовательскую кнопку возврата, как показано ниже
источник