Как изменить название меню?

В простом тестовом проекте на 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".

Другие вопросы по тегам