SwiftUI NavigationLink跳转异常求助(视障信息分享应用开发)
我正在为视障群体开发一款信息分享应用,目前遇到一个棘手问题——点击某特定分类的NavigationLink时,视图会立即返回,控制台提示:SwiftUI encountered an issue when pushing a NavigationLink. Please file a bug,其他分类无此异常。
相关代码
CategoryView 代码
struct CategoryView: View { @EnvironmentObject var blindzeln: BLINDzeln @State private var showingAlertNoData = false @State private var showingAlertNoInternet = false var body: some View { VStack(spacing: 100){ NavigationView { List(blindzeln.listOfCategories.uniqued(), id: \.self) { item in if blindzeln.listOfCategories[0] != " " { NavigationLink(destination: CategoryDetailView(categoryTitle: item, catID: blindzeln.findCatID(item: item))) { VStack{ HStack{ VStack(alignment: .leading) { Text(item) .font(.system(size: 100)) .lineLimit(1) .minimumScaleFactor(0.1) .foregroundColor(.primary) } } .padding() BigDivider() } }.listRowSeparatorTint(.primary) .listRowSeparator(.hidden) } } .listStyle(.inset) .refreshable { if !cellMonitor.isReachable {showingAlertNoInternet = true} await blindzeln.updateAllData() } .navigationTitle("Kategorien") .navigationBarTitleDisplayMode(.inline) .toolbar(content: { ToolbarItem(placement: .principal, content: { Text("Kategorien") })}) } .alert("Keine Daten vorhanden! \n Nach unten ziehen zum aktualisieren.", isPresented: $showingAlertNoData) { Button("OK", role: .cancel) { } } .alert("Du scheinst offline zu sein. Bitte eine Verbindung zum Internet herstellen!", isPresented: $showingAlertNoInternet) { Button("OK", role: .cancel) { } } .task() { if blindzeln.listOfCategories[0] == " " { // print ("leer") await blindzeln.loadCategoriesFromFile()} // else {print("ANzahl KAtegorien \(blindzeln.listOfCategories.count)")} // await blindzeln.loadData() await blindzeln.updateAllData() if blindzeln.listOfCategories.count == 0 {showingAlertNoData = true } } } .onAppear(){ blindzeln.listOfCategoriesFiles = defaults.object(forKey:"SavedCategoryFiles") as? [String] ?? ["categories"] } } }
CategoryDetailView 代码
struct CategoryDetailView: View { @EnvironmentObject var blindzeln: BLINDzeln @AppStorage ("version") var version: Int = 0 @State var shouldRefresh: Bool = false @State private var searchText = "" let categoryTitle: String let catID: Int var body: some View { VStack{ List { ForEach(blindzeln.results.filter { searchText.isEmpty || ($0.title.localizedCaseInsensitiveContains(searchText) || $0.textBody.localizedCaseInsensitiveContains(searchText)) }, id: \.entryID){ item in switch item.mediaType{ case "image": NavigationLink(destination: ItemDetailViewImage(item: item, isFavorite: false, catID: catID)) {DisplayEntryView(item: item)}.listRowSeparatorTint(.primary).listRowSeparator(.hidden) case "speech": NavigationLink(destination: ItemDetailViewText2Speech(item: item, isFavorite: false, catID: catID)) {DisplayEntryView(item: item)}.listRowSeparatorTint(.primary).listRowSeparator(.hidden) case "vcf": NavigationLink(destination: ItemDetailViewVcf(item: item, isFavorite: false, catID: catID)) {DisplayEntryView(item: item)}.listRowSeparatorTint(.primary).listRowSeparator(.hidden) case "cal": NavigationLink(destination: ItemDetailViewWithCalendar(item: item, isFavorite: false, catID: catID)) {DisplayEntryView(item: item)}.listRowSeparatorTint(.primary).listRowSeparator(.hidden) case "text": NavigationLink(destination: ItemDetailViewText(item: item, isFavorite: false, catID: catID)) {DisplayEntryView(item: item)}.listRowSeparatorTint(.primary).listRowSeparator(.hidden) case "audio": NavigationLink(destination: ItemDetailViewMP3(item: item, isFavorite: false, catID: catID)) {DisplayEntryView(item: item)}.listRowSeparatorTint(.primary).listRowSeparator(.hidden) default: NavigationLink(destination: ItemDetailViewStandard(item: item, isFavorite: false, catID: catID)) {DisplayEntryView(item: item)}.listRowSeparatorTint(.primary).listRowSeparator(.hidden) } } } .searchable(text: $searchText, placement: .navigationBarDrawer(displayMode: .always), prompt: "") {} .navigationTitle(categoryTitle) .navigationBarTitleDisplayMode(.inline) .listStyle(.inset) } .task(){ await blindzeln.decodeCategoryData(showCategory: categoryTitle) } } }
恳请各位提供解决思路,感谢!
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

