使用if语句在swiftui中设置布尔值

使用if语句在swiftui中设置布尔值,swiftui,Swiftui,我对swiftui非常陌生,所以我不知道自己是否完全做错了,但这个错误没有帮助。这是我的密码: import SwiftUI struct IntroScreenP2: View { var hasName: Bool = false @State private var firstName: String = "" @State private var lastName: String = "" var body: some View { VStack { if first

我对swiftui非常陌生,所以我不知道自己是否完全做错了,但这个错误没有帮助。这是我的密码:

import SwiftUI

struct IntroScreenP2: View {
 var hasName: Bool = false
 @State private var firstName: String = ""
 @State private var lastName: String = ""
 var body: some View {
  VStack {
   if firstName != "" && lastName != "" {
    hasName = true
   }
   TextField("First Name", text: $firstName)
    .padding(.leading)
    .padding(.bottom, 5)
   Divider()
   TextField("Last Name", text: $lastName)
    .padding(.leading)
    .padding(.top, 5)
   }
  }
}
我只是想当用户在文本字段中输入他们的名字时,将布尔值设置为true。它总是给我一个错误,说“表达式类型在没有更多上下文的情况下是不明确的”

您不能像往常一样在SwiftUI中“编写代码”。SwiftUI要求您返回视图。 也许你应该读一些SwiftUI的介绍和教程

这是代码“更正”。如果你告诉我你想要的变量是什么,我可以进一步帮助你

struct ContentView: View {
    @State var hasName: Bool = false
    @State private var firstName: String = ""
    @State private var lastName: String = ""
    var body: some View {
        VStack {
            if firstName != "" && lastName != "" {
              Text("Has name")
            }
            TextField("First Name", text: $firstName)
                .padding(.leading)
                .padding(.bottom, 5)
            Divider()
            TextField("Last Name", text: $lastName)
                .padding(.leading)
                .padding(.top, 5)
        }
    }
}

你根本不需要设置它!只要计算一下:

var hasName: Bool { firstName != "" && lastName != "" }

请注意最好使用
。isEmpty

var hasName: Bool { !firstName.isEmpty && !lastName.isEmpty }