2015-10-26 117 views
0

在视图控制器上,我有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个问题:

  1. 如何初始化 '形象' 以更好的方式常数/变量(IBAction为外)?
  2. 改用这种大switch语句是什么样的(循环)语句?因此:我想确定哪个按钮被按下,然后更新var i的值,循环显示图像,并找到并更新图像(i)的button101图像。

我希望我的问题是清楚的。请让我知道,如果他们不是。 非常感谢帮助!

回答

1

你的switch语句的作用一样:

if sender.tag < 100 { 
    let image = UIImage (named: "image\(sender.tag + 1)") 
    button101.setImage(image, forState:.Normal) 
} 

你可以把你UIImageViewControllervar UIImage: UIImage!顶部,如果你想,但我看不出有任何理由这样做。

+0

这的确是我的解决方案,谢谢!我知道这可能是这样简单的代码。我很接近,但无法做到。是的,这样就没有必要在我的视图控制器的顶部初始化图像变量。 – codeDude