点击 3 次时如何更改导航按钮的图像?
Posted
技术标签:
【中文标题】点击 3 次时如何更改导航按钮的图像?【英文标题】:How to change the image of a navigation button when tapped 3 times? 【发布时间】:2015-08-31 13:14:54 【问题描述】:当用户点击 3 次时,我需要在导航栏中更改 UIButton 的图像。每次点击都会显示不同的 UIImage 及其对应的集合视图。我让动画集合视图完美运行,但是...
如何在 Swift 中更改按钮图像?
我尝试了多种方法,但似乎无法使其正常工作,例如:
@IBAction func buttonTapped(sender: UIButton)
if let myButton = UIImage(named:"btn1")
sender.setImage(myButton, forState: .Normal)
if let myButton = UIImage(named:"btn2")
sender.setImage(myButton, forState: .Normal)
if let myButton = UIImage(named:"btn3")
sender.setImage(myButton, forState: .Normal)
有很多关于将 uibutton 更改为两种状态的帖子,例如秒表或播放/暂停,但我需要导航栏中的 3 种状态。
谢谢!
【问题讨论】:
【参考方案1】:我认为有两种简单的方法可以做到这一点:
你可以在你的类中设置一个变量 Int 并计算它直到它为 2,然后再将它设置为 0,如下所示:
var buttonCounter: Int = 0
@IBAction func buttonTapped(sender: UIButton)
if buttonCounter == 0
let myButton = UIImage(named:"btn1")
sender.setImage(myButton, forState: .Normal)
buttonCounter++
else if buttonCounter == 1
let myButton = UIImage(named:"btn2")
sender.setImage(myButton, forState: .Normal)
buttonCounter++
else
let myButton = UIImage(named:"btn3")
sender.setImage(myButton, forState: .Normal)
buttonCounter = 0
您可以执行几乎相同的操作,但您可以使用 UIButton 的 .tag 属性而不是使用变量。标签是一个整数,通常用于找出哪个按钮调用了 IBAction,但您只有一个按钮调用该函数,因此您可以像这样使用它:
@IBAction func buttonTapped(sender: UIButton)
if sender.tag == 0
let myButton = UIImage(named:"btn1")
sender.setImage(myButton, forState: .Normal)
sender.tag++
else if sender.tag == 1
let myButton = UIImage(named:"btn2")
sender.setImage(myButton, forState: .Normal)
sender.tag++
else
let myButton = UIImage(named:"btn3")
sender.setImage(myButton, forState: .Normal)
sender.tag = 0
【讨论】:
谢谢 M。看起来不错。很难让它工作。不确定是不是因为按钮在导航栏中?错误是“[UIBarButtonItem setImage:forState:]: unrecognized selector sent to instance” 查看***.com/questions/2455161/… 寻求帮助 该链接完全是大杂烩。 ;) 帮助不大,尽管我确实尝试检查 NSWindow 内存管理、重新连接事件处理程序(出口和操作)、删除按钮的目标操作、检查 SB 中的类,并三重检查拼写错误。我认为这是因为它是一个条形按钮项,并且 UIBarButtonItem 没有从 UIButton 继承,所以 setImage:forState 不会按建议工作。 我不确定,但可能是您设置了一个插座,将其删除,然后忘记在视图控制器上断开它? 我让它工作了。我所做的只是将 UIControlState 添加到 .Normal。谢谢!以上是关于点击 3 次时如何更改导航按钮的图像?的主要内容,如果未能解决你的问题,请参考以下文章