答案 0 :(得分:2)
您可以设置UIBarButtonItem
:
item.setBackgroundImage(UIImage(named: "item-bg.png"), forState: UIControlState.Normal, barMetrics: UIBarMetrics.Default)
然后,当您想要取消选择它时,请将背景图像设置为nil
:
item.setBackgroundImage(nil, forState: UIControlState.Normal, barMetrics: UIBarMetrics.Default)
(你必须为背景创建一个图像文件)
答案 1 :(得分:1)
问题在于,UIControl拥有一个isSelected
属性来实现此目标,UIBarButtonItem
不继承自该属性,因此您无法进行强制转换和设置值。但是,我发现了一个奇怪的解决方法。如果将按钮操作的sender
的类型设置为UIControl
,它将被视为成熟的UIControl,并且可以设置isSelected
。
例如:
@objc func showContentsView(_ sender: UIControl) {
sender.isSelected.toggle()
}
如果您需要在其他位置切换状态,则可以在View Controller上设置一个变量,如下所示:
var selectedControl: UIControl?
在操作中设置selectedControl
的值,并在取消选择时将其设置为nil
。
答案 2 :(得分:0)
item.image = UIImage(named: isSelected ? "SelectedImage" : "NormalImage")