如何通过按其他按钮来更改一个按钮的图像?
问题描述:
在视图控制器上,我有101个按钮。如果按下前100个按钮中的一个,我想更改101号按钮(本项目中有100张图像; image1,image2,image3等)的图像如何通过按其他按钮来更改一个按钮的图像?
所以我通过给每个按钮从0-100标签,然后做一个switch语句基于sender.tag
@IBOutlet weak var button101 : UIButton!
var i = 1
// I hooked up all the other 100 buttons to a single IBAction
@IBAction func buttonTapped(sender: UIButton) {
switch sender.tag {
case 0: i = 1
let image = UIImage (named: "image\(i)")
button101.setImage(image, forState:.Normal)
case 1: i = 2
let image = UIImage (named: "image\(i)")
button101.setImage(image, forState:.Normal)
case 2: i = 3
let image = UIImage (named: "image\(i)")
button101.setImage(image, forState:.Normal)
case ..: // etc. until case 99 (because button 100 has tag 99)
default: break
这个超级丑陋的代码的工作原理:它改变了按钮数量101的图像到指定的图像(I)。但我想要一个更优雅更好的解决方案。
我有2个问题:
- 如何初始化 '形象' 以更好的方式常数/变量(IBAction为外)?
- 改用这种大switch语句是什么样的(循环)语句?因此:我想确定哪个按钮被按下,然后更新var i的值,循环显示图像,并找到并更新图像(i)的button101图像。
我希望我的问题是清楚的。请让我知道,如果他们不是。 非常感谢帮助!
答
你的switch语句的作用一样:
if sender.tag < 100 {
let image = UIImage (named: "image\(sender.tag + 1)")
button101.setImage(image, forState:.Normal)
}
你可以把你UIImage
你ViewController
与var UIImage: UIImage!
顶部,如果你想,但我看不出有任何理由这样做。
这的确是我的解决方案,谢谢!我知道这可能是这样简单的代码。我很接近,但无法做到。是的,这样就没有必要在我的视图控制器的顶部初始化图像变量。 – codeDude