如何在Swift中实现按钮点击时更改UIImage的图像?

24

我试图通过在 Swift 中点击按钮来更改 uiimage 控件包含的图像。为此,我编写了一个简单的“猜我拿起了多少手指”的应用程序。我阅读了一些 StackOverflow 文章,但无法解决问题。您可以在下面看到我的代码和我的用户界面。我如何在单击时更改图像?

这是我的代码:

import UIKit

class ViewController: UIViewController {

    @IBOutlet var myImageView: UIImageView!
    @IBOutlet var inputField: UITextField!
    @IBAction func clickedGuessButtonAction(sender: AnyObject) {
        println("Guess button clicked")
        var randomX = Int(arc4random()%6)
        println("randomX = \(randomX)")
        var guess = inputField.text.toInt();

        let image0 = UIImage(named: "images/qm.jpg")
        let image1 = UIImage(named: "images/tick.jpg")
        let image2 = UIImage(named: "images/cross.jpg")

        if((inputField.text) != nil){
            if(guess == randomX){
                println("correct")
                myImageView.image=UIImage(named: "tick.jpg") // THIS IS NOT WORKING
                myImageView.image=image1                     // THIS IS NOT WORKING TOO
                inputField.resignFirstResponder();// hides keyboard
            }
            else
            {
                println("wrong")
                myImageView.image=UIImage(named: "cross.jpg")
                inputField.resignFirstResponder();//hides keyboard
            }
        }
        else{
            println("invalid input. requires integer only")
            inputField.resignFirstResponder();// hides keyboard
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

这是我的用户界面:

输入图像描述

3个回答

76

您不需要指定资源目录的名称或图像文件的扩展名。请尝试将它们删除。例如,

myImageView.image = UIImage(named: "tick")

截至Xcode 9 beta 3上的Swift 4,我们现在需要包括扩展名,例如“.jpeg”吗? - Allister Bah
@AllisterBah 不需要指定文件扩展名。 - Isuru

6
可能取决于您正在使用的Xcode版本。对我而言,以下方法可行:
ImageView.image = UIImage(named: "Elephants.jpg")

1
显然,这对提问者并没有起作用。您能否提供更具体的细节,说明这可能适用于哪个版本(例如,您正在使用什么版本)? - Juliën

-13

在Swift中:

myImageView = "nameOfImage";

4
那是轻量级的 Swift 伙计。你甚至没有调用 UIImage 类型。 - Amit Kalra
3
将其更改为:myImageView: UIImage = UIImage(named: "nameOfImage"),然后添加一些说明。这需要更新...无论如何都已经回答了,但我建议更新答案。 - Lukesivi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接