文本字段 swiftui xcode 13

TextField swiftui xcode 13

我一直在使用 xcode 12 和 swiftui。在我的应用程序中,我有一个带有西班牙语和英语本地化占位符的 textFiel,我切换到 xcode 13,但它没有显示我的本地化占位符

这只发生在 TextField 中,使用 SecureField 即使使用 Text 也不会发生

这是我的代码

struct ContentView: View {
  @State var email:String = ""
    
    var body: some View {
        VStack () {
           TextField("login5", text: self.$email)
                    .autocapitalization(.none)
                    .padding()
                    .background(RoundedRectangle(cornerRadius: 50).stroke(Color("grayColor")))
        }.padding(.horizontal, 20)
    }
}
                 

Localizable.strings

"login5" = "Correo eléctronico";

with SecureField in ios15, 你可以使用提示参数来获取你的本地化字符串:

SecureField("purpose", text: $password, prompt: Text("login6"))

或使用标签:

 SecureField(text: $password) {
     Text("login6")
 }

编辑 1:

这是我用来显示有效的本地化 TextField 和 SecureField 的测试代码。

import SwiftUI

@main
struct TestApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

struct ContentView: View {
    @State var email = ""
    @State var password = ""
    @State var isVisible = false
    
    var body: some View {
        VStack (spacing: 55) {
            Button(action: { isVisible.toggle() }) {
                Text("Toggle isVisible")
            }
            TextField("login5", text: $email).border(.black)
            if isVisible {
                TextField("login6", text: $password).border(.green)
            } else {
                SecureField("password", text: $password, prompt: Text("login6")).border(.red)
            }
        }.padding(.horizontal, 20)
    }
}

测试 Localizable.strings 文件。

"login5" = "hola login5";
"login6" = "contraseña";

EDIT2:手动使用 LocalizedStringKey 的替代方法,

TextField(LocalizedStringKey("login5"), text: $email)

你的主要问题是,就像 workingdog 已经说过的,你需要使用 text: $variable。 这意味着您将变量声明为 @State var password = "" 并像这样使用它..

struct ContentView: View {
    @State var password = ""
    ...
    if self.visible{
        TextField("login6", text: $password)
        ....
    } else {
        SecureField("login6", text: $password)
        ....
    }
}

顺便说一句。下次 post 你的代码是代码而不是图片。它更容易帮助你:) 希望我正确理解你的问题,这将是你的解决方案。

我遇到了完全相同的问题,从 Xcode 12 到 13。突然之间,我的某些(不是全部)文本字段不再显示本地化字符串。我能够通过强制解决问题:

TextField(LocalizedString("usernameLabel"), text: $username)

而不是

Textfield("usernameLabel", text: $username)