微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有选择意外行为的 NavigationView 中的 SwiftUI 列表

如何解决带有选择意外行为的 NavigationView 中的 SwiftUI 列表

比较以下两个代码片段的行为;目标 iOS 14.4 iPad(第 4 代)模拟器,Xcode 版本 12.4 (12D4e):

首先:

    struct experimental: View {
        @State private var selection: Int? = 0
        
        var body: some View {
            NavigationView {
                            vstack {
                                ForEach(0 ..< 5) { item in
                                    NavigationLink(
                                        destination: Text("item \(item)"),tag: item,selection: $selection) {
                                        Text("item \(item)")
                                    }
                                }
                            }
                Text("Hello,World!")
            }
        }
    }

第二:

    struct experimental: View {
        @State private var selection: Int? = 0
        
        var body: some View {
            NavigationView {
                List(0 ..< 5) { item in
                    NavigationLink(
                        destination: Text("item \(item)"),selection: $selection) {
                        Text("item \(item)")
                    }
                }
                Text("Hello,World!")
            }
        }
    }

一个示例在模拟器中按预期运行,应用程序开始显示认选择(项目 0)。但是,应用程序启动的第二个示例显示“Hello,World!”文本。当点击左上角的后退按钮时,它将返回认选择(项目 0)然后菜单。当我们添加一个 Text("Hello,World!") 视图以使其三列导航,中间和最后一列初始化为“Hello,World!”时,发生了同样的意外行为。文本,但当点击顶部的后退按钮时,中间列更改为认选择(项目 0)。当 List 视图用于将 NavigationLink 包装在 NavigationView 中时,它的行为会有所不同。

更新: iPad DoubleColumnNavigationViewStyle() 和新的三列 NavigationView 上出现问题。适用于 StackNavigationViewStyle

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。