Код: Выделить всё
SwiftUI/NavigationColumnState.swift:520: Fatal error: 'try!' expression unexpectedly raised an error: SwiftUI.AnyNavigationPath.Error.comparisonTypeMismatch`
Это похоже на ошибку, хотя обычно это происходит, когда я думаю, что сделал что-то глупое. Хотелось бы узнать обходной путь или исправление, если кто-нибудь сможет это понять.
Xcode: Версия 14.3 (14E222b)
Симуляторы: iPad Air (5-го поколения) / My Mac (предназначено для iPad)
Модели
Код: Выделить всё
import SwiftUI
final class AppModel: ObservableObject {
@Published var appNavigation: AppNavigation? = .lists
@Published var listsNavigation: [ListsNavigation] = []
@Published var settingsNavigation: [SettingsNavigation] = []
}
enum AppNavigation {
case lists, settings
}
enum SettingsNavigation {
case settings1, settings2
}
enum ListsNavigation {
case favourites, notes
}
Код: Выделить всё
import SwiftUI
@main
struct splittyApp: App {
@StateObject private var model = AppModel()
var body: some Scene {
WindowGroup {
NavigationSplitView {
List(selection: $model.appNavigation) {
NavigationLink(value: AppNavigation.lists) {
Label("Lists", systemImage: "list.clipboard")
}
NavigationLink(value: AppNavigation.settings) {
Label("Settings", systemImage: "gearshape")
}
}
} detail: {
switch model.appNavigation {
case .lists: ListsView()
case .settings: SettingsView()
case .none: Text("Error")
}
}
.environmentObject(model)
}
}
}
Код: Выделить всё
import SwiftUI
struct ListsView: View {
@EnvironmentObject private var model: AppModel
var body: some View {
NavigationStack(path: $model.listsNavigation) {
List {
NavigationLink(value: ListsNavigation.favourites) {
Text("Favourites")
}
NavigationLink(value: ListsNavigation.notes) {
Text("Notes")
}
}
.navigationDestination(for: ListsNavigation.self) { value in
switch value {
case .favourites: Text("Favourites View")
case .notes: Text("Notes View")
}
}
}
}
}
Код: Выделить всё
import SwiftUI
struct SettingsView: View {
@EnvironmentObject private var model: AppModel
var body: some View {
NavigationStack(path: $model.settingsNavigation) {
List {
NavigationLink(value: SettingsNavigation.settings1) {
Text("Settings 1")
}
NavigationLink(value: SettingsNavigation.settings2) {
Text("Settings 2")
}
}
.navigationDestination(for: SettingsNavigation.self) { value in
switch value {
case .settings1: Text("Settings 1")
case .settings2: Text("Setings 2")
}
}
}
}
}
Шаги для воспроизведения:
[*]Запустите приложение на iPad
[*]Нажмите между основной навигацией приложения (списки/настройки)
Подробнее здесь: https://stackoverflow.com/questions/761 ... pemismatch
Мобильная версия