【问题标题】:How to display the correct label.text depending on a randomised array index如何根据随机数组索引显示正确的 label.text
【发布时间】:2019-08-28 04:06:40
【问题描述】:

这里是初学者,

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

我目前正在使用 Int.random 将英雄图像从 fighters 数组中拉到 ImageViews 中。

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

我最初尝试在 fighters["1"] 中为 fighterOne 执行此操作,这将是龙骑士。

我尝试了各种“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])
}

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

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

【问题讨论】:

    标签: ios swift swift3


    【解决方案1】:

    您需要在您的viewDidLoad() 中调用updateFighterName() 之前调用updateFighters(),因为您取决于它的作用。

    您的viewDidLoad() 应如下所示:

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

    你需要替换:

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

    与:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-20
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多