Как добавить аксессуар для надписи к элементу боковой панели в SwiftUI

#ios #swiftui #ipados

#iOS #swiftui #ipados

Вопрос:

Я создаю приложение SwiftUI для iPad, используя новый интерфейс боковой панели, представленный в iPadOS 14. У каждого элемента боковой панели должен быть аксессуар с надписью. Вот как я его создаю и соответствующий результат:

 struct ContentView: View {

    enum NavigationItem {
        case companies, aapl
    }

    @State private var selection: NavigationItem? = .companies

    var sidebar: some View {
        List(selection: $selection) {
            NavigationLink(destination: Text("Companies"), tag: NavigationItem.companies, selection: $selection) {
                HStack {
                    Label("Companies", systemImage: "list.bullet")
                    Spacer()
                    Text("6")
                        .foregroundColor(.secondary)
                        .padding(.trailing, 6)
                }
            }
            .tag(NavigationItem.companies)

            NavigationLink(destination: Text("Apple Inc"), tag: NavigationItem.aapl, selection: $selection) {
                Label("Apple Inc", systemImage: "circle")
            }
            .tag(NavigationItem.aapl)
        }
        .listStyle(SidebarListStyle())
        .navigationTitle("Menu")
    }

    var body: some View {
        NavigationView {
            sidebar

            Text("Select an item")
                .foregroundColor(.secondary)
        }
    }
}
 

введите описание изображения здесь

Это работает, но цвет ярлыка аксессуара не меняется при выборе элемента. Ярлык, созданный с Label помощью, работает, как и ожидалось.

Это правильный способ добавить аксессуар label к элементу боковой панели в SwiftUI или есть лучший способ?

Комментарии:

1. Вы указали для него явный цвет .foregroundColor(.secondary) , попробуйте удалить эту строку.

2. Когда я удаляю явный цвет, он меняется на белый при выборе и используется .primary в противном случае. Но мне бы хотелось стандартного поведения, которое представляет собой немного более светлый оттенок серого для этикетки аксессуара.