使用UITextField字符串更改UIView颜色

时间:2019-06-13 02:35:00

标签: swift uiview google-cloud-firestore uitextfield uilabel

我有一个非常简单的应用程序,可以将“缺席/当前”发送到Firestore,并且标签更改为发送到服务器的内容。

UILabel位于UIView内,当标签不显示时,我想将视图的颜色更改为红色,如果存在,则将视图的颜色更改为绿色。

我该怎么做?

@IBOutlet weak var p1ViewColor: UIView!
@IBOutlet weak var p1Label: UILabel!
@IBOutlet weak var p1ABTF: UITextField!
@IBOutlet weak var p1PRTF: UITextField!


// fetch data and display it
override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    pListener = docRef.addSnapshotListener { (docSnapshot, error ) in
        guard let docSnapshot = docSnapshot, docSnapshot.exists else { return }
        let myData = docSnapshot.data()
        let absent1 = myData?["Absent"] as? String ?? ""
        let present1 = myData?["Present"] as? String ?? ""
        self.p1Label.text = "\(absent1) \(present1)"

    }
}

1 个答案:

答案 0 :(得分:0)

您只需设置p1ViewColor.backgroundColor = UIColor.red例如

但是首先,您应该重新设计您的数据结构,这就是您苦苦挣扎的原因。

据我了解,状态可以为存在和不存在,这可以通过在您的Bool中使用简单的docSnapshot来实现。想象有一个简单的变量,称为"Present",如果存在则为true,如果不存在则为false,您的代码看起来像这样:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    pListener = docRef.addSnapshotListener { (docSnapshot, error ) in
        guard let docSnapshot = docSnapshot, docSnapshot.exists else { return }
        guard let myData = docSnapshot.data() else { return }

        let present: Bool = myData["Present"] // "Present" is now a Boolean

        self.p1Label.text = present ? "Present" : "Absent"
        p1ViewColor.backgroundColor = present ? .green : .red
    }
}

更漂亮,更易于阅读。