如何通过按下其他按钮来更改一个按钮的图像?
how to change image of one button by pressing other buttons?
在 viewcontroller 我有 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 之外)初始化 'image' constant/variable?
- 使用什么样的(循环)语句来代替这个大的 switch 语句?
所以:我想确定按下了哪个按钮,然后更新 var i 的值,遍历图像并使用图像 (i) 查找和更新 button101 的图像。
我希望我的问题很清楚。如果不是,请告诉我。
非常感谢您的帮助!
您的 switch 语句与以下行为相同:
if sender.tag < 100 {
let image = UIImage (named: "image\(sender.tag + 1)")
button101.setImage(image, forState:.Normal)
}
如果愿意,您可以将 UIImage
和 var UIImage: UIImage!
放在 ViewController
的顶部,但我看不出有任何理由这样做。
在 viewcontroller 我有 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 之外)初始化 'image' constant/variable?
- 使用什么样的(循环)语句来代替这个大的 switch 语句? 所以:我想确定按下了哪个按钮,然后更新 var i 的值,遍历图像并使用图像 (i) 查找和更新 button101 的图像。
我希望我的问题很清楚。如果不是,请告诉我。 非常感谢您的帮助!
您的 switch 语句与以下行为相同:
if sender.tag < 100 {
let image = UIImage (named: "image\(sender.tag + 1)")
button101.setImage(image, forState:.Normal)
}
如果愿意,您可以将 UIImage
和 var UIImage: UIImage!
放在 ViewController
的顶部,但我看不出有任何理由这样做。