模拟器与物理设备:使用一次后 NavigationLink 损坏

sim*_*bac 5 ios swift swiftui

我正在使用 SwiftUI 创建一个 iOS 应用程序。我正在使用:

  • Xcode 11.3 测试版 (11C24b)
  • 运行 iOS 13.3 的 iPad 模拟器
  • 物理 iPad 也运行 iOS 13.3

但是,该应用程序在两个设备上的行为不同。例如在物理 iPad 上,NavigationLink只能使用一次。

这是它在物理设备上的外观(首次使用后 NavigationLink 已损坏) 在模拟器上它完美地工作

这是我的第一个 iOS 应用程序。所以我想知道如何规避或解决这些类型的错误?

import SwiftUI

enum ExerciseType: String, CaseIterable, Codable, Hashable {
    case vowels = "Vowels"
    case special = "Special Characters"
    case small = "Small Characters"
    case long = "Long Vovels"
}

enum LessonType: String, CaseIterable, Codable, Hashable {
    case hiragana = "Introduction to Hiragana"
    case katakana = "Introduction to Katakana"
    case kanji = "Introduction to Kanji"
}

struct ContentView: View {
    var body: some View {
        NavigationView{
            Form{
                Section(header: Text("Default Lesson")){
                    List{
                        ForEach(LessonType.allCases, id:\.self){ lesson in
                            NavigationLink(destination: LessonView(), label: {Text(lesson.rawValue)})
                        }
                    }
                }
            }
        .navigationBarTitle("iPad NavigationLink")
        }.navigationViewStyle(StackNavigationViewStyle())
    }
}

struct LessonView: View {
    var body: some View{
        Form{
            List{
                ForEach(ExerciseType.allCases, id:\.self){ exercise in
                    NavigationLink(destination: Text(exercise.rawValue), label: {Text(exercise.rawValue)})
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Tho*_*Vos 2

Apple 在 iOS 13.3 beta 4 中修复了该错误。请记住,您测试时 iOS 13.3 正处于测试阶段。这不是 iOS 13.2 中的错误,因此无需再担心。