SwiftUI 侧边栏列表不注册第一次点击

SwiftUI sidebar list does not register first click

使用 SwiftUI,我在 Mac 应用程序 中使用侧边栏导航来更改视图。单击边栏中的项目会更改右侧的视图。但是,当应用程序启动时,侧边栏 List 不会记录第一次点击。 select 一个项目需要点击两次。之后,边栏会正常运行,只需单击一下即可更改视图。

如何解决 List 的初始启动问题?

import SwiftUI

struct DetailView: View {

    var selection: String

    var body: some View {
        containedView()
    }

    private func containedView() -> AnyView {
        switch selection {
        case " Apple":
            return AnyView(AppleView())
        case " Banana":
            return AnyView(BananaView())
        case " Coconut":
            return AnyView(CoconutView())
        default:
            return AnyView(Text("Some view here").frame(maxWidth: .infinity, maxHeight: .infinity))
        }
    }
}

struct SidebarView: View {

    let items = [" Apple", " Banana", " Coconut", " Cherry", " Peanut", " Peach", " Tomato", " Bread", " Pizza", " Broccoli", " Kiwi", " Cheese", " Watermelon"]

    var body: some View {
        List(items, id: \.self) { item in
            NavigationLink(destination: DetailView(selection: item)) {
                Text("\(item)")
            }
        }
        .listStyle(SidebarListStyle())
    }
}

struct ContentView: View {
    var body: some View {
        NavigationView {
            SidebarView()
            DetailView(selection: " Apple")
        }
        .frame(height: 300)
    }
}

List需要添加选择,如下图

@State var current = Set<String>()
var body: some View {
    List(items, id: \.self, selection: $current) { item in
        NavigationLink(destination: DetailView(selection: item)) {
            Text(item)
        }
    }
    .listStyle(SidebarListStyle())
}