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

时间:2019-12-08 19:55:33

标签: 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 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。它一直给我一个错误,说“表达式类型在没有更多上下文的情况下是模棱两可的”

2 个答案:

答案 0 :(得分:0)

您不能像在SwiftUI中一样照常“编码”。 SwiftUI要求您返回Views。 也许您应该阅读一些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)
        }
    }
}

答案 1 :(得分:0)

您根本不需要set!只需进行计算即可:

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

请注意,最好改用.isEmpty

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