gpt4 book ai didi

ios - SwiftUI Form 和 StackNavigationViewStyle 狂奔

转载 作者:行者123 更新时间:2023-12-01 15:44:29 25 4
gpt4 key购买 nike

我有一个带有 Form 的 NavigationView包含 Picker和一个 NavigationLink ,并想使用 navigationViewStyle(StackNavigationViewStyle()) .在纵向模式下重新启动时,它的行为符合预期。但是在将设备旋转到横向和纵向并点击 NavigationLink 之后,它会加载目标 View 的多个副本,然后返回到原始 View ,如下所示:

UI gone berserk

这发生在物理设备和模拟器上。

如果我删除 navigationViewStyle(StackNavigationViewStyle())这个问题不会发生,但我更喜欢它。

我已将问题归结为此代码示例。这是在一个全新的 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,这就是可视化调试器中的样子:

Visual debugger

彼此后面有 View 的副本。每次来回旋转都会增加更多。

我用谷歌搜索并搜索了 Stackoverflow,但没有找到解决方案。

最佳答案

更新:使用 Xcode 12,此错误已修复。
对于 Xcode 11.3.1,Form 中似乎存在一个错误,随着设备的每次方向变化制作 View 的新副本。
示例代码:

import SwiftUI

struct ContentView: View {
var body: some View {
Form{
Text("Text")
}
}
}
开始时的可视化调试器,向左旋转然后向右旋转:
Visual debugger
A Form自动采用 GroupedListStyle似乎确实存在错误。因为一个 ListGroupedListStyle在可视化调试器中显示相同的行为。
import SwiftUI

struct ContentView: View {

var body: some View {
List{
Text("Text")
}.listStyle(GroupedListStyle())
}
}

关于ios - SwiftUI Form 和 StackNavigationViewStyle 狂奔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59895935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com