【问题标题】:How to return the correct UIImageView如何返回正确的 UIImageView
【发布时间】:2017-10-15 17:01:43
【问题描述】:

寻找使用函数来检查“数字”并返回正确的 UIImageView 的方法,而不是必须做出很长的 if 语句。这是我目前使用的代码:

 randNumber = Int(arc4random_uniform(UInt32(array.count)))    

          if number == 1{
            image1.image = UIImage(named: array[randNumber])
            number += 1
        } else if number == 2{
            image2.image = UIImage(named: array[randNumber])
            number += 1
        } else if number == 3{
            image3.image = UIImage(named: array[randNumber])
            number += 1
        } else if number == 4{
            image4.image = UIImage(named: array[randNumber])
            number += 1
        }

如果数字为3,则返回image3

大家有什么建议吗?

【问题讨论】:

  • 所以你想缩短代码?

标签: swift swift3 uiimageview


【解决方案1】:

这是一种缩短代码的方法。

从你的图像视图中创建一个数组:

let imageViewArray = [image1, image2, image3, image4]

生成你的随机数:

randNumber = Int(arc4random_uniform(UInt32(array.count)))

魔法来了。由于number的值和你要使用的图像视图之间的对应关系是这样的:

number    ImageView
1         image1
2         image2
3         image3
4         image4

数组的索引与您的图像视图的对应关系如下:

index     ImageView
0         image1
1         image2
2         image3
3         image4

我们只需要从number 中减去一个以使其与数组索引匹配。这意味着我们可以使用这个表达式来访问我们想要的图像视图:

imageViewArray[number - 1]

整行会是这样的:

imageViewArray[number - 1].image = UIImage(named: array[randNumber])

【讨论】:

  • 非常感谢您的帮助,这就是我一直在寻找的。我之前试过这个,粘贴代码时出现同样的错误:“'String'类型的值没有成员'image'”
  • 您确定将image1 和其他图像视图声明为UIImageView? @Gjeruldsen
  • @IBOutlet weak var image1: UIImageView!
  • 没关系。刚刚重新启动了 Xcode,现在它可以完美运行了。再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 2016-01-18
  • 2020-06-11
相关资源
最近更新 更多