如何根据随机数组索引显示正确的label.text

时间:2019-04-06 12:42:56

标签: ios swift swift3

在这里开始

我正在编写一个随机匹配DOTA 2英雄的项目。

我目前正在使用Int.random从战斗机数组中将英雄图像拖入ImageViews。

但是,我现在试图在图像下方实现一个相应的标签,以显示ImageView中当前的英雄名称。

我最初是在fighters [“ 1”]上为fighterOne做到这一点的,该战斗机将是Dragon Knight。

我尝试了各种'if'语句,但似乎都不起作用。我也搜索过论坛和文档,但是在任何地方都找不到解决方案。

@IBOutlet weak var fighterOne: UIImageView!
@IBOutlet weak var matchButton: UIButton!
@IBOutlet weak var fighterOneName: UILabel!
let fighters = ["1","2","3","4","5","6","7","8","9","10","11","12",]


var randomIndex1: Int = 0

override func viewDidLoad() {
    super.viewDidLoad()
    updateFighterName()
    updateFighters()
}


///// FUNCTIONS /////

func updateFighterName() {     
    if fighterOne.image == UIImage(named: "1") {
        fighterOneName.text = "Dragon Knight"
    } else {
        fighterOneName.text = "Wrong"
    }
}

func updateFighters() {
    randomIndex1 = Int.random(in: 0...11)
    fighterOne.image = UIImage(named: fighters[randomIndex1])
}

我无法从中得到结果。当我运行该应用程序时,偶尔会显示“龙骑士”,但是它不在正确的英雄形象下,显示的时间非常不稳定,而且根据我的判断,似乎没有逻辑上的显示顺序。 / p>

我们将不胜感激,如果您需要更多信息,请告诉我!

1 个答案:

答案 0 :(得分:0)

在您的updateFighters()内部调用updateFighterName()之前,需要先调用viewDidLoad(),因为您要依靠它的作用。

您的viewDidLoad()应该如下所示:

override func viewDidLoad() {
    super.viewDidLoad()

    updateFighters()
    updateFighterName()
}

您需要替换:

if fighterOne.image == UIImage(named: "1") {

}

使用:

if fighterOne.image.isEqual(UIImage(named: "1")) {

}