如何根据所选数字进行UIImageView更改?

问题描述 投票:0回答:1

我正在创建一个应用程序,从52张牌中选择两张随机牌。然后,如果其中一张牌很强(在我的情况下,强牌是“10”或更强)我希望它显示图像“是”(勾号)。如果两张牌都很弱,那么我希望它显示图像“不”(交叉)。我一直试图找到一个问题,但每次我改变一些东西时,都会出现一种新的错误。

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

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(firstCard : Int, secondCard : Int) -> UIImageView {

    if firstCard > 33 {

    return theResult.image = UIImage(named: cardResults)
}
}

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

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

https://imgur.com/a/kjdcqcO

ios swift output
1个回答
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])
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.