Как изменить название меню?
В простом тестовом проекте на Github я пытаюсь отобразить меню с 3 языками и флагами, чтобы пользователи могли выбирать локализацию:
struct ContentView: View {
// ...some Core Data related code skipped...
let labels = [
"en" : "🇺🇸 EN",
"de" : "🇩🇪 DE",
"ru" : "🇷🇺 RU"
]
@AppStorage("language") var language:String = "en"
var body: some View {
VStack(alignment: .trailing) {
Menu(language) {
Button("🇺🇸 EN", action: { language = "en" })
Button("🇩🇪 DE", action: { language = "de" })
Button("🇷🇺 RU", action: { language = "ru" })
}.padding()
List {
ForEach(topEntities) { top in
TopRow(topEntity: top)
}
}
}.environment(\.locale, .init(identifier: language))
}
}
Приведенный выше код работает нормально, но имеет одну косметическую проблему: в меню отображается выбранный язык в виде простой строки «en» (или «de», или «ru»):
Поскольку я новичок в Swift и SwiftUI, я не понимаю, как установить метку на более удобную строку, то есть на выбранный язык и флаг, например «🇺🇸 EN». Пожалуйста помоги
1 ответ
Вы можете получить красивую строку из своего
labels
Словарь. Вот рабочая версия:
Menu(labels[language] ?? "Unknown") {
Button("🇺🇸 EN", action: { language = "en" })
Button("🇩🇪 DE", action: { language = "de" })
Button("🇷🇺 RU", action: { language = "ru" })
}.padding()
Я только что заменил
language
с участием
labels[language] ?? "Unknown"
.