在这里开始
我正在编写一个随机匹配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>
我们将不胜感激,如果您需要更多信息,请告诉我!
答案 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")) {
}