Eu estava trabalhando em um aplicativo com login e, após o login, há categorias listadas. E em cada categoria, existem alguns itens listados horizontalmente. A coisa é após o login, a página principal aparece e tudo está listado muito bem. Quando você clica em um item, ele é exibido na tela detalhada, mas quando você tenta voltar, ele trava. Encontrei esse fluxo Por que meu aplicativo SwiftUI falha ao navegar para trás depois de colocar um `NavigationLink` dentro de um` navigationBarItems` em um `NavigationView`? mas não consegui resolver o meu problema. Como meu projeto ficou complicado, eu só queria praticar a navegação no swiftui e criei um novo projeto. A propósito, baixei a última versão do xcode 11.3. Eu escrevi um código simples da seguinte maneira:
NavigationView{
NavigationLink(destination: Test()) {
Text("Show Detail View")
}
.navigationBarTitle("title1")
E a visualização Test () é a seguinte:
import SwiftUI
struct Test: View {
var body: some View {
Text("Hello, World!")
}
}
struct Test_Previews: PreviewProvider {
static var previews: some View {
Test()
}
}
Como você pode ver, é realmente simples. Eu também tentei exemplos semelhantes na internet, mas não funciona da maneira que supõe que funcione. Quando executo o projeto, clico no link de navegação e ele navega para a visualização Test (). Depois clico no botão Voltar e ele navega para a página principal. No entanto, quando clico no link de navegação pela segunda vez, nada acontece. O link de navegação funciona apenas uma vez e depois nada acontece. Ele não navega, não gera nenhum erro. Eu sou novo no swiftui e tudo é ótimo, exceto a navegação. Tentei muitos exemplos e sugeri soluções na internet, mas nada parece resolver meus problemas.
fonte
Respostas:
[ATUALIZAÇÃO] 12 de fevereiro de 2020 - verifiquei esse problema no Xcode 11.4 beta e constatei que esse problema foi resolvido.
Eu também estava recebendo o mesmo problema no meu projeto, quando o estava testando no simulador do Xcode. No entanto, quando iniciei o aplicativo em um dispositivo real (iPhone X com iOS 13.3),
NavigationLink
estava funcionando perfeitamente. Então, realmente parece o bug do Xcode.fonte
Simulador 11.4: esse problema foi corrigido
Você precisa redefinir o
isActive
valor padrão na segunda visualização. Funciona em dispositivos e emuladores.fonte
onDisappear
será chamado depoisisActive
é falso, portanto o NavigationView não funcionará corretamente. É uma solução temporária para emuladores apenas porque o NavigationView funciona corretamente nos dispositivos. Nas versões anteriores dos emuladores NavigationView funcionou, espero que seja corrigido no futuro emulador.Presumivelmente, isso será resolvido quando a Apple corrigir o bug relacionado que impede que a 13.3 seja selecionável como destino de implantação .
Estou enfrentando o mesmo problema que todos os outros. Esse problema está presente no simulador e na visualização executando 13.2, mas foi corrigido ao implantar no meu próprio dispositivo executando 13.3.
fonte
Como o @ Александр Грабовский disse que parece um bug do Xcode 11.3, estou encontrando o mesmo problema, você deve fazer o downgrade ou usar alguma solução alternativa, como o botão voltar personalizado, como abaixo
fonte