У меня есть NavigationView с Form
, содержащим Picker
и NavigationLink
, и я хочу использовать navigationViewStyle(StackNavigationViewStyle())
. При запуске fre sh в портретном режиме он ведет себя как ожидалось. Но после поворота устройства в альбомную ориентацию и возврата в портретную ориентацию и нажатия на NavigationLink оно загружает несколько копий целевого представления, а затем возвращается в исходное представление, как показано здесь:
UI *
Это происходит на физическом устройстве и в симуляторе.
Если я удаляю navigationViewStyle(StackNavigationViewStyle())
, эта проблема не возникает, но я бы предпочел иметь ее.
Я свел проблему к этому примеру кода. Это выполняется в бесплатном sh проекте SwiftUI, без изменений в стандартном SceneDelegate.
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView{
Form{
NavigationLink(destination: DestinationView()) {
Text("NavigationLink")
}
}.navigationBarTitle("ContentView")
}.navigationViewStyle(StackNavigationViewStyle())
}
}
struct DestinationView: View {
var body: some View {
Text("Destination")
.navigationBarTitle("DestinationView")
}
}
После поворота устройства в горизонтальную плоскость и обратно, а затем касания NavigationLink, это выглядит так в визуальном отладчике:
Визуальный отладчик
Есть дубликаты представления друг за другом. С каждым поворотом туда-сюда добавляются еще.
Я гуглил и искал Stackoverflow, не найдя решения.