SwiftUIで非常に単純なTextFieldを作成しようとしましたが、それを機能させることができず、何が間違っているのか理解できません。
Xcodeは私に言うエラーメッセージを与えます:
「複雑なクロージャーの戻り値の型を推測できません。明確にするために型を明示的に追加してください。」
どうすればいいかわかりません。 StackOverflowでSwiftUIを使用したTextFieldの他のコード例をいくつか見つけましたが、同じエラーが発生し続けます。
struct TextFieldExample : View {
@State var email: String = "Enter email address"
var body: some View {
VStack {
TextField($email)
Text("Your email is \(email)!")
}
}
}
struct ButtonTextField : View {
@State var text: String = ""
var body: some View {
HStack {
TextField($text,
placeholder: Text("type something here..."))
Button(action: {
// Closure will be called once user taps your button
print(self.$text)
}) {
Text("SEND")
}
}
}
}
期待される結果=動作するTextField実際の結果= Xcodeのエラー
Xcodeの最近のベータリリースでは、TextFieldが変更されました。
@State var email: String = ""
var body: some View {
TextField("Email", text: $email, onEditingChanged: { (isChanges) in
// On Editing Changed
}) {
// On Commit
}
.padding(.leading, 13).padding(.trailing, 13).padding(.top, UIScreen.main.bounds.size.height / 2)
.textContentType(.emailAddress)
.textFieldStyle(RoundedBorderTextFieldStyle.init())
}
SearchViewのようなTextField-XCODE 11.
struct SearchBarV: View {
@State var text: String = ""
var onEditingChanged: (Bool) -> Void = { _ in }
var onCommit: () -> Void = { }
var body: some View {
GeometryReader { metrics in
TextField("placeholder", text: self.$text, onEditingChanged: self.onEditingChanged, onCommit: self.onCommit)
.background(Color.gray.opacity(0.1))
.padding(EdgeInsets(top: 0.0, leading: 16.0, bottom: 0, trailing: 16.0))
.frame(width: metrics.size.width, height: 50)
.keyboardType(.emailAddress)
}
}
}
struct SearchBarV_Previews : PreviewProvider {
static var previews: some View {
SearchBarV()
}
}