如何根据所选编号更改UIImageView?

时间:2019-04-07 13:36:54

标签: ios swift output

我正在创建一个应用,该应用从52张卡组中随机选择两张卡。然后,如果其中一张卡很强(在我的情况下,一张强卡为“ 10”或更高),我希望它显示一张图像“是”(勾号)。如果两个卡都很弱,那么我希望它显示图像“否”(十字)。我一直在尝试查找问题,但是每次更改某些内容时,都会出现一种新型错误。

我试图在func resultOfShuffle中设置未知的输出类型,我尝试为UIImageView创建和命名插座两次。

# ...
class PullVariable:
    def __init__(self, app): # add app here
        self.pulled_entry = app.my_entry.get() # use app here
        print(self.pulled_entry)
# and then
root=Tk()
ui = Application(root)
ui.hello_world()
ui.entry()

pv = PullVariable(ui) # supply PullVariable with instance of Application

...

let cardArray = ["1.png", (...), "52.png"] 
 // All of the cards, from 2 to Ace (with every color). Number "33" is a card 10.

...

let cardResults = ["yes.png"]

...

@IBOutlet weak var theResult: UIImageView!

...

func randomizeCards() {

    chooseCardOne = Int.random(in: 0 ... 51)
    chooseCardTwo = Int.random(in: 0 ... 51)

现在,最后一个func resultOfShuffle的返回是错误的-告诉我:使用未解析的标识符'theResult'问题,但这有点棘手,我不明白。

这就是我的应用程序的样子:

https://imgur.com/a/kjdcqcO

1 个答案:

答案 0 :(得分:0)

每个语句是否都在同一ViewController中执行? 然后,它将theResult识别为UIImageView

更新

问题已在注释中基于函数声明的范围进行了解决。由于它是在定义theResult的类的外部中声明的,因此无法访问它。

解决方案可能是将变量作为参数传递给函数,或在ViewController内部在变量的相同范围内声明函数。

其他注释

无论如何,您正在尝试通过此行返回某些内容:

theResult.image = UIImage(named: cardResults)

不会计算类型,而只是将视图的图像设置为cardResults中的内容。因此,您不应该返回任何内容,而只能使用此函数来更新视图的内容-这意味着您应该使用Void返回类型。

此外,您正在将[String]类型传递给图像初始化程序,而您应该只传递String

尝试这样的事情:

func resultOfShuffle(firstCard : Int, secondCard : Int) {

    if firstCard > 33 {
        theResult.image = UIImage(named: cardResults[0])
    }
}