我只是在学习Swift,并且试图根据两个图像之间的用户操作来切换按钮。只需检查显示的图像的名称并切换到另一幅图像就可以了。
我可以从按钮获取图像,但不一定是它的名称。我的问题是如何将其与Swift中的图像名称进行比较。
func toggleImage(){
var img = self.sendButton.image(for: .normal)//NO ERROR
if img.isEqual(image-one) {
//ERROR HERE
//switch to image-two
} else {
//switch to image-one
}
}
预先感谢您的任何建议。
答案 0 :(得分:2)
使用===
private let image-one = UIImage(named: "name1")
private let image-two = UIImage(named: "name2")
override func viewDidLoad() {
sendButton.setImage(image-one, for: .normal)
}
func toggle image() {
if self.sendButton.currentImage === image-one {
.....
}
}
使用标志(不太优雅,但更安全):
enum WhichImage {
case image-one, image-two
}
private var whichImage: WhichImage = .image-one
您无需检查图像,而是检查whichImage
并在更改图像时对其进行更新。
答案 1 :(得分:1)
有一个更好的方法。将按钮视为复选框。未选中状态是图像1,选中状态是图像2。
要设置UIButton
使其类似于复选框,请使用isSelected
属性。
sendButton.setImage(UIImage(named: "image1"), for: .normal)
sendButton.setImage(UIImage(named: "image2"), for: .selected)
// You may also need to set the image for the highlighted selected state.
sendButton.setImage(UIImage(named: "image2"), for: [.selected, .highlighted])
现在该按钮同时知道两个图像,您可以使用isSelected
属性在和之间切换。
func toggleImage() {
sendButton.isSelected = !sendButton.isSelected
}
答案 2 :(得分:0)
您需要获取图像名称,并进行如下比较
if self.sendButton.currentImage == UIImage(named: "image-one") {
//switch to image-two
}else {
//switch to image-one
}
答案 3 :(得分:0)