#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
в противном случае. Но мне бы хотелось стандартного поведения, которое представляет собой немного более светлый оттенок серого для этикетки аксессуара.