我有一个非常简单的应用程序,可以将“缺席/当前”发送到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)"
}
}
答案 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
}
}
更漂亮,更易于阅读。