带有选择意外行为的 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...