视图加载后无法更新UIButton.image

时间:2016-01-04 18:13:43

标签: ios swift uibutton

我正在尝试一些相对简单的事情。我有一个加载图像的UIButton:

@IBOutlet var peer5Outlet: UIButton!

    override func viewDidLoad() {
    super.viewDidLoad()

    peer5Outlet.enabled = true
    var img = UIImage(named: "camera")
    peer5Outlet.setImage(UIImage(named: "camera"),forState: UIControlState.Normal) }

加载后,我只想通过调用方法来更新该图像:

func updateButtonImage() {

    peer5Outlet.imageView!.image = UIImage(named: "connected")!

    print("peer5Outlet.imageView!.image = \(peer5Outlet!.imageView!.image!)")

}

但是,我仍然无法更新图像;原始图像在视图中永远不会改变。

也许我错过了某种视图重载方法?

3 个答案:

答案 0 :(得分:1)

updateButtonImage功能更新为

func updateButtonImage() {
    peer5Outlet.setImage(UIImage(named: "connected"), forState: .Normal)
    print("peer5Outlet.imageView!.image = \(peer5Outlet!.imageView!.image!)")
}

答案 1 :(得分:1)

尝试

peer5Outlet.setBackgroundImage(UIImage(named: "connected"), forState: UIControlState.Normal)

编辑:为了使用setImage方法,您需要将按钮的类型更改为"自定义" ...

答案 2 :(得分:0)

只要您在UI上触摸UIImage

,就需要使用主线程

GCD - main vs background thread for updating a UIImageView

func updateButtonImage() {
    dispatch_async(dispatch_get_main_queue()) {
        // update image
    }
}