假设我们有两个非常基本的类:
-
名为
Item的NSManagedObject类 -
以及一个名为
Navigation的ObservableObject类来处理NavigationPath
final class Navigation: ObservableObject {
@Published var path = NavigationPath()
}
当NavigationPath包含某个Item元素时,我希望禁用NavigationLink,如下例所示:
struct ContentView: View {
@StateObject private var navigation = Navigation()
@Environment(\.managedObjectContext) private var viewContext
@FetchRequest(sortDescriptors: [NSSortDescriptor(keyPath: \Item.timestamp, ascending: true)], animation: .default)
private var items: FetchedResults<Item>
var body: some View {
NavigationStack(path: $navigation.path) {
List(items) { item in
NavigationLink(value: item) {
Text("Item at \(item.timestamp!.formatted())")
}
.disabled(navigation.path.contains(/* some Item */))
}
}
.environmentObject(navigation)
}
}
然而令我惊讶的是,NavigationPath没有contains()函数。有什么想法吗?