【发布时间】:2021-05-14 18:01:26
【问题描述】:
我实现了以下功能:
func setStarButton() {
let currentItem = data[currentItemIndex!]
if currentItem.isStarred == true {
starButton.setImage(UIImage(systemName: "star.fill"), for: .normal)
}
else {
starButton.setImage(UIImage(systemName: "star"), for: .normal)
}
}
@IBAction func starTapped(_ sender: Any) {
// Change the property in the Array
var currentItem = item[currentItemIndex!]
currentItem.isStarred?.toggle()
// Update the database
model.updateStarredStatus(currentItem.docID!, currentItem.isStarred!)
// Update the button
setStarButton()
}
然后我在 viewDidAppear 中调用该函数:
override func viewDidAppear(_ animated: Bool) {
// Set the status of the star button
setStarButton()
}
因此发生了以下预期行为:
- 只有当我第一次打开视图控制器时,星形按钮才会显示为正确的填充/未填充状态
- 当我点击星号按钮时,我的 Firebase Firestore 数据库会更新 Bool 值
我想要实现的是:当我继续实时点击它时,星形按钮在视图中变为填充/未填充。
有什么想法吗?我想我可能需要视图来监听数据库中的更改以进行视觉更新,但我不确定。非常感谢任何指导!
【问题讨论】:
-
你的数组中的项目是类还是结构?
-
@Paulw11 它们是结构体!
标签: ios swift firebase boolean ibaction