【发布时间】:2015-10-26 17:58:16
【问题描述】:
在视图控制器上,我有 101 个按钮。如果按下前 100 个按钮中的一个,我想更改 101 号按钮的图像(我在这个项目中有 100 个图像;image1、image2、image3 等)
所以我通过给每个按钮一个 0-100 的标签来做到这一点,然后根据 sender.tag 做出一个 switch 语句
@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)。但我想要一个更优雅更好的解决方案。
我有两个问题:
- 如何以更好的方式(在 IBAction 之外)初始化“图像”常量/变量?
- 用什么样的(循环)语句来代替这个大的 switch 语句? 所以:我想确定按下了哪个按钮,然后更新 var i 的值,循环遍历图像并使用 image(i) 找到并更新 button101 的图像。
我希望我的问题很清楚。如果不是,请告诉我。 非常感谢您的帮助!
【问题讨论】:
标签: swift loops uibutton uiimage switch-statement