问题描述
我现在正在使用Swift制作多人井字游戏。当前,两个用户可以在Firestore中阅读同一文档。我在iPhone 11模拟器上运行该应用程序,该模拟器是图中的正确设备。在两个玩家点击按钮后(可点击按钮是图像中的空白板,并且在玩家点击按钮后,图像变为苹果或菠萝),应该更改另一个设备按钮的图像。
这是我的代码,用于更改我在viewdidload中编写的按钮的图像,但是正如您在图像中所看到的,如果其他玩家进行更改,我仍然无法反映更改。
func changeImage() {
db.collection(K.FStore.newGameCollection).document(gameDocumentID)
.addSnapshotListener { documentSnapshot,error in
if let err = error {
print("Error getting documents1: \(err)")
} else {
if let data = documentSnapshot!.data() {
let gameBordArr = data[K.FStore.gameBoardField] as! [String]
for (index,fruit) in gameBordArr.enumerated() {
print("tagnumber: \(index),fruit: \(fruit),board: \(gameBordArr)")
if let button = self.view.viewWithTag(index) as? UIButton {
print("button \(button)")
if fruit == "" {
button.setimage(UIImage(named: K.Image.plate),for: .normal)
} else {
button.setimage(UIImage(named: fruit),for: .highlighted)
}
}
}
}
}
}
}
正如我提到的,我在正确的设备上运行了该应用程序,changeImage函数的for循环中的打印件之一就是这样的
标签编号:8,水果:菠萝,板子:[“”,“”,“”,“苹果”,“苹果”,“菠萝”,“菠萝”,“苹果”,“菠萝”]
按钮
>
正确的设备(iphone11)现在正在访问游戏板(["","","apple","pineapple","pineapple"]
)的阵列,它可以看到另一位玩家在标签号8处进行了更改的菠萝字符串,这是标签的右下角井字游戏。
因此,使用该标签号,我想我可以访问设备上的每个按钮并自动更改按钮的图像...
我以为我写了正确的代码以反映另一位玩家所做的更改,但是仍然行不通... 我认为我犯了一个错误,但不确定要修复哪个部分。有人可以为我指出这一点吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)