Swiftui navigationPath в NavigationStack (Path: $ Path) в NavigationPlitView не компилируетсяIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Swiftui navigationPath в NavigationStack (Path: $ Path) в NavigationPlitView не компилируется

Сообщение Anonymous »

У меня есть простое приложение 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • 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
  • Где разместить глобальный NavigationPath в SwiftUI
    Anonymous » » в форуме IOS
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Swiftui: Передайте @published infing <navigationPath>, не передавая ссылку на экземпляр класса, который владеет исходным
    Anonymous » » в форуме IOS
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»