首页 > 解决方案 > 模拟器与物理设备:一次使用后 NavigationLink 损坏

问题描述

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

但是,该应用程序在两种设备上的行为不同。例如在实体 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)})
                }
            }
        }
    }
}

标签: iosswiftswiftui

解决方案


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


推荐阅读