У меня есть простое приложение NavigationSplitView с простой моделью SwiftData. Я пытаюсь использовать NavigationPath, чтобы вернуться к ThingListView, когда несколько слоев глубоко. Каждая статья, которую я нашел, и три разных кодера ИИ говорят, что этот код должен работать, но он не компилируется. В деталях: ниже строка «NavigationStack (Path: $ router.path) {» повышает ошибку », не может найти« $ router »в сфере сфера». < /P>
import SwiftUI
import SwiftData
import Observation
@main
struct ThingNavigationPathApp: App {
@State private var router = Router()
var body: some Scene {
WindowGroup {
ThingListView()
//.environment(router)
}
.modelContainer(for: [Thing.self])
.environment(router)
}
}
@Observable
class Router {
var path = NavigationPath()
func navigateToRoot() {
path = NavigationPath()
}
}
struct ThingListView: View {
@Environment(\.modelContext) private var context
@Query(sort: \Thing.name) private var things: [Thing]
@Environment(Router.self) private var router
@State private var selectedThing: Thing?
@State private var searchText = ""
var body: some View {
NavigationSplitView {
VStack {
Text("Things")
List(selection: $selectedThing) {
ForEach(things, id: \.self) { thing in
NavigationLink(value: thing) {
ThingRowView(thing: thing)
}
}
}
.searchable(text: $searchText)
Button(action: {
Task {
//do some setup
}
}, label: {
Text("Load Examples")
})
}
} detail: {
NavigationStack(path: $router.path) {
VStack {
if let selectedThing = selectedThing {
ThingDetailView(selectedThing: selectedThing)
} else {
PlaceholderView()
}
}
.navigationDestination(for: Thing.self) { thing in
ThingEditView(thing: thing)
}
}//nav
}
}
}
< /code>
и только для полноты: < /p>
@Model
final public class Thing {
var name: String = ""
var comment: String = ""
var imageData: Data?
var count: Int = 0
init(name: String, comment: String, imageData: Data? = nil, count: Int) {
self.name = name
self.comment = comment
self.imageData = imageData
self.count = count
}
static let one = Thing(name: "Thing One", comment: "fruit", count: 1)
static let two = Thing(name: "Thing Two", comment: "vegetable", count: 2 )
static let three = Thing(name: "Thing Three", comment: "protein", count: 3)
}//class thing
struct ThingDetailView: View {
@Environment(\.modelContext) private var context
@Environment(Router.self) private var router
let selectedThing: Thing
@State private var newUIImage: UIImage? = nil
@State private var disableSaveButton: Bool = false
@State private var shouldEditPhoto: Bool = false
var body: some View {
List {
Section {
NavigationLink(value: selectedThing) {
ThingRowView(thing: selectedThing)
}
} header: {
Text("Thing Name")
}
}
.navigationTitle(selectedThing.name)
}
}
< /code>
Любое руководство будет оценено. Xcode 16.2, iOS 18.2
Подробнее здесь: https://stackoverflow.com/questions/794 ... litview-do
Swiftui navigationPath в NavigationStack (Path: $ Path) в NavigationPlitView не компилируется ⇐ IOS
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Swiftui navigationPath в NavigationStack (Path: $ Path) в NavigationPlitView не компилируется
Anonymous » » в форуме IOS - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Swiftui navigationPath в NavigationStack (Path: $ Path) в NavigationPlitView не компилируется
Anonymous » » в форуме IOS - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Swiftui navigationPath в NavigationStack (Path: $ Path) в NavigationPlitView не компилируется
Anonymous » » в форуме IOS - 0 Ответы
- 13 Просмотры
-
Последнее сообщение Anonymous
-