swift NavigationStack与数组from关系

bfhwhh0e  于 2023-04-04  发布在  Swift
关注(0)|答案(2)|浏览(135)

我正在为相关条目的数组做导航堆栈

var body: some View {
    NavigationStack(path: $navPath){
        VStack {
            List(Array(plant.event as! Set<Event>), id: \.self) { eventInList in
                NavigationLink(destination: EventPageView(event: eventInList)) {
                    EventCardRowView(event: eventInList)
                }.listRowBackground(Color("ChampagnePink"))
            }.navigationDestination(for: Event.self) { event in
                EventPageView(event: event)
            }
        }
    }
}

而这一个不工作-所有的事件被推到导航堆栈一次-如果我点击一个事件,我只是下降到所有事件的链conquently。
虽然它的工作完全正确,当我现在用相关实体做它时,但是作为单独获取的数组:

NavigationStack(path: $navPath){
    VStack {
        List(events, id: \.date) { eventInList in
            NavigationLink(destination: EventPageView(event: eventInList)) {
                EventCardRowView(event: eventInList)
            }.listRowBackground(Color("ChampagnePink"))
        }.navigationDestination(for: Event.self) { event in
            EventPageView(event: event)
        }
    }
}

什么是错误的,什么是正确的方式来做,与关系条目一对多?
编辑:我的问题与CoreData one-to-many relationship. Problem with NSSet attribution不同
我没有问题,以获取和查看列表-我获取相关enries数组和列表它的罚款,但点击列表项不正常工作-整个数组是推栈一次-这意味着如果我点击事件3返回按钮将带我到事件2,然后1

bq9c1y66

bq9c1y661#

看来您对NavigationStack和NavigationLink的配置可能是问题的原因。请确保在使用一对多连接时,每个NavigationLink仅负责导航到一个事件,而不是所有事件。

var body: some View {
    NavigationStack(path: $navPath){
        VStack {
            List(Array(plant.event as! Set<Event>), id: \.self) { eventInList in
                NavigationLink(destination: EventPageView(event: eventInList)) {
                    EventCardRowView(event: eventInList)
                }.listRowBackground(Color("ChampagnePink"))
            }
        }.navigationDestination(for: Event.self) { event in
            EventPageView(event: event)
        }
    }
}

可能行得通

ulydmbyx

ulydmbyx2#

当Navigation堆栈包含Form或包含Form时,Form会触发所有数组条目在NavigationStack上发送,所以解决方案只是单独使用它们

相关问题