当有人在其他设备中进行更改时更改按钮的图像

问题描述

我现在正在使用Swift制作多人井字游戏。当前,两个用户可以在Firestore中阅读同一文档。我在iPhone 11模拟器上运行该应用程序,该模拟器是图中的正确设备。在两个玩家点击按钮后(可点击按钮是图像中的空白板,并且在玩家点击按钮后,图像变为苹果或菠萝),应该更改另一个设备按钮的图像。

enter image description here

这是我的代码,用于更改我在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处进行了更改的菠萝字符串,这是标签的右下角井字游戏。

enter image description here

因此,使用该标签号,我想我可以访问设备上的每个按钮并自动更改按钮的图像...

我以为我写了正确的代码以反映另一位玩家所做的更改,但是仍然行不通... 我认为我犯了一个错误,但不确定要修复哪个部分。有人可以为我指出这一点吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...