如何更改菜单的标签?
How to change the label of a Menu?
在 a simple test project at Github 中,我正在尝试显示具有 3 种语言的菜单和允许用户 select 本地化的标志:
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))
}
}
上面的代码似乎工作正常,但有一个外观问题:Menu 显示 selected 语言一个简单的字符串“en”(或“de”或“ru” ):
作为 Swift 和 SwiftUI 新手我不明白,如何将标签设置为更好的字符串,即 selected 语言和标志,如“EN”。请帮助
您可以从 labels
词典中获取漂亮的字符串。这是工作版本:
Menu(labels[language] ?? "Unknown") {
Button(" EN", action: { language = "en" })
Button(" DE", action: { language = "de" })
Button(" RU", action: { language = "ru" })
}.padding()
我刚刚用 labels[language] ?? "Unknown"
替换了 language
。
在 a simple test project at Github 中,我正在尝试显示具有 3 种语言的菜单和允许用户 select 本地化的标志:
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))
}
}
上面的代码似乎工作正常,但有一个外观问题:Menu 显示 selected 语言一个简单的字符串“en”(或“de”或“ru” ):
作为 Swift 和 SwiftUI 新手我不明白,如何将标签设置为更好的字符串,即 selected 语言和标志,如“EN”。请帮助
您可以从 labels
词典中获取漂亮的字符串。这是工作版本:
Menu(labels[language] ?? "Unknown") {
Button(" EN", action: { language = "en" })
Button(" DE", action: { language = "de" })
Button(" RU", action: { language = "ru" })
}.padding()
我刚刚用 labels[language] ?? "Unknown"
替换了 language
。