Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IOS/Swift:检查按钮图像以切换按钮图像_Ios_Swift_Uibutton - Fatal编程技术网

IOS/Swift:检查按钮图像以切换按钮图像

IOS/Swift:检查按钮图像以切换按钮图像,ios,swift,uibutton,Ios,Swift,Uibutton,我正在学习Swift,并尝试在两幅图像之间根据用户操作切换按钮。只要检查显示的图像的名称并切换到另一个图像就好了 我可以从按钮中获取图像,但不一定是名称。我的问题是如何将其与Swift中的图像名称进行比较 func toggleImage(){ var img = self.sendButton.image(for: .normal)//NO ERROR if img.isEqual(image-one) { //ERROR HERE //swit

我正在学习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
    }
}

提前感谢您的建议。

您需要获取图像名称,并按如下方式进行比较

  if self.sendButton.currentImage == UIImage(named: "image-one") {
           //switch to image-two
            }else {
    //switch to image-one
        }

您需要获得图像名称并进行如下比较

  if self.sendButton.currentImage == UIImage(named: "image-one") {
           //switch to image-two
            }else {
    //switch to image-one
        }
  • 使用===

    private let image one=UIImage(名为:“name1”)
    私有let image 2=UIImage(名为:“name2”)
    重写func viewDidLoad(){
    sendButton.setImage(图像一,用于:。正常)
    }
    func切换图像(){ 如果self.sendButton.currentImage==图像一{ ..... } }

  • 使用旗帜(不那么优雅,但更安全):

    enum WhichImage{
    案例图片一,图片二
    }
    私有变量whichImage:whichImage=.image one

  • 不检查图像,而是检查图像,并在图像更改时更新图像

  • 使用===

    private let image one=UIImage(名为:“name1”)
    私有let image 2=UIImage(名为:“name2”)
    重写func viewDidLoad(){
    sendButton.setImage(图像一,用于:。正常)
    }
    func切换图像(){ 如果self.sendButton.currentImage==图像一{ ..... } }

  • 使用旗帜(不那么优雅,但更安全):

    enum WhichImage{
    案例图片一,图片二
    }
    私有变量whichImage:whichImage=.image one


  • 不要检查图像,而是检查图像,并在图像更改时进行更新。

    有更好的方法。将按钮视为复选框。未选中状态为图像1,选中状态为图像2

    要将
    ui按钮设置为像复选框一样工作,请使用
    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])
    
    func toggleImage() {
        sendButton.isSelected = !sendButton.isSelected
    }
    
    既然按钮知道这两个图像,您可以使用
    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])
    
    func toggleImage() {
        sendButton.isSelected = !sendButton.isSelected
    }
    

    有更好的办法。将按钮视为复选框。未选中状态为图像1,选中状态为图像2

    要将
    ui按钮设置为像复选框一样工作,请使用
    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])
    
    func toggleImage() {
        sendButton.isSelected = !sendButton.isSelected
    }
    
    既然按钮知道这两个图像,您可以使用
    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])
    
    func toggleImage() {
        sendButton.isSelected = !sendButton.isSelected
    }
    

    在界面中设置图像接近代码中按钮的刚更改状态

    下面是更改状态的代码

     @IBAction func fastButtonAction(_ sender: Any) {
        fastButton.isSelected = !fastButton.isSelected
    }
    

    在界面中设置图像接近代码中按钮的刚更改状态

    下面是更改状态的代码

     @IBAction func fastButtonAction(_ sender: Any) {
        fastButton.isSelected = !fastButton.isSelected
    }
    

    这里有一个类似的问题:你们选择了非常艰难的方式来实现你们想要的。考虑不同图像的不同状态的代码> UIButton < /代码>,如<代码>选择< /代码>和正常。这样,当点击按钮时,您可以将按钮的选定属性切换为true或false,图像将发生变化。这里的问题类似:您选择了非常艰难的方式来实现您想要的。考虑不同图像的不同状态的代码> UIButton < /代码>,如<代码>选择< /代码>和正常。这样,当点击按钮时,您可以将按钮的选定属性切换为true或false,图像将发生变化。这将导致始终重新加载“图像一”,这是非常低效的。您可以创建一个变量,该变量可以在启动时加载,也可以在开始使用时使用惰性变量加载。我们可以根据需要对其进行优化。因此,您需要相应地更改代码示例,否则会产生误导。这将导致始终重新加载“image one”,这是非常低效的。您可以创建一个可以在开始时加载的变量,或者在开始使用时使用惰性变量进行加载。我们可以根据需求对其进行优化。因此,您需要相应地更改代码示例,否则会产生误导。这是一种很好的方法,但是,我可能需要在某个时候使用ISselect。实际上有三个州。img,img1 selected和img2这是一个很好的方法,但是,我可能也需要在某些时候使用isselected。实际上有三个州。如果private let image one=。。。是否在函数中?user6631314。应该这样。谁在乎任务在哪里完成?!如果private让image one=。。。是否在函数中?user6631314。应该这样。谁在乎任务在哪里完成?!