如果存在.navigationBarItems,则列表节无法正常工作

时间:2020-07-31 13:51:03

标签: swift swiftui swiftui-list

如何在导航栏中同时显示按钮和包含部分的列表?

以下是带有import fs2.concurrent.Queue import cats.implicits._ import cats.effect.Concurrent import cats.effect.concurrent.Ref def groupBy[F[_], A, K](selector: A => F[K])(implicit F: Concurrent[F]): Pipe[F, A, (K, Stream[F, A])] = { in => Stream.eval(Ref.of[F, Map[K, Queue[F, Option[A]]]](Map.empty)).flatMap { st => val cleanup = { import alleycats.std.all._ st.get.flatMap(_.traverse_(_.enqueue1(None))) } (in ++ Stream.eval_(cleanup)) .evalMap { el => (selector(el), st.get).mapN { (key, queues) => queues.get(key).fold { for { newQ <- Queue.unbounded[F, Option[A]] // Create a new queue _ <- st.modify(x => (x + (key -> newQ), x)) // Update the ref of queues _ <- newQ.enqueue1(el.some) } yield (key -> newQ.dequeue.unNoneTerminate).some }(_.enqueue1(el.some) as None) }.flatten }.unNone.onFinalize(cleanup) } } 的代码:

UPDATE T1
SET T1.TOTAL_NET_BAL = ISNULL((SELECT T2.TOTAL_NET_BAL 
                               FROM #TEMP_TABLE_1 AS T2
                               WHERE T1.RANK - 1 = T2.RANK),0) + (T1.MAX_STD_CAPACITY + T1.MAX_QT_CAPACITY) - (T1.STANDARD_PANELS + T1.QUICKTURN_PANELS)
FROM #TEMP_TABLE_1 AS T1

没有.navigationBarItems

struct AllMatchesView: View {
    @Environment(\.managedObjectContext) var moc
    
    @State var events = EventData()
    
    var body: some View {
        NavigationView {
            List{
                ForEach(events.sections) { section in
                    Section(header: Text(section.title)) {
                        ForEach(section.matches) { match in
                            Text("Row")
                        }
                    }
                        .navigationBarTitle("Title")
                        .navigationBarItems(trailing:
                            NavigationLink(destination: AddMatchView().environment(\.managedObjectContext, self.moc)) {
                                Image(systemName: "plus")
                                    .resizable()
                                    .frame(width: 22, height: 22)
                                    .padding(.horizontal)
                            }
                            .padding(.leading)
                    )
                }
            }.onAppear(){
                self.events = EventData()
            }
        }
    }
}

结果为.navigationBarItems

pic 1

没有struct AllMatchesView: View { @Environment(\.managedObjectContext) var moc @State var events = EventData() var body: some View { NavigationView { List{ ForEach(events.sections) { section in Section(header: Text(section.title)) { ForEach(section.matches) { match in Text("Row") } } .navigationBarTitle("Title") } }.onAppear(){ self.events = EventData() } } } } 的结果:

pic 2

1 个答案:

答案 0 :(得分:1)

只需将这些修饰符移出动态内容即可,否则,您尝试在每个部分中包含重复的栏项,这似乎会使SwiftUI引擎发疯。

    var body: some View {
        NavigationView {
            List{
                ForEach(events.sections) { section in
                    Section(header: Text(section.title)) {
                        ForEach(section.matches) { match in
                            Text("Row")
                        }
                    }
                }
            }
            .navigationBarTitle("Title")
            .navigationBarItems(trailing:
                NavigationLink(destination: AddMatchView().environment(\.managedObjectContext, self.moc)) {
                    Image(systemName: "plus")
                        .resizable()
                        .frame(width: 22, height: 22)
                        .padding(.horizontal)
                }
                .padding(.leading)
            )
            .onAppear(){
                self.events = EventData()
            }
        }
    }