Help us understand the problem. What is going on with this article?

UIButtonをタップして画像を切り替える

More than 1 year has passed since last update.

Todoリストなどを作成するとき、チェックマークのUIButtonをタップしてボタンの画像を切り替えたい時があると思います。実際に実装して注意点があったので書き残しておきます。

すぐ思いつく実装

自分は最初に以下のように実装しました。あまりにシンプルですね。

ViewController.swift
class ViewController: UIViewController {
    @IBOutlet weak var imageButton: UIButton!

    @IBAction func imageButtonPush(_ sender: Any) {

        let image = UIImage(named: "icon")
        imageButton.imageView?.image = image
    }
}

しかし、実際にボタンをタップしてみたところ画像は元のままで見た目が変更されませんでした。
UIImageViewから差し替える必要があるのでは?と思い、以下に変更して再度実行してみました。

ViewController.swift
class ViewController: UIViewController {
    @IBOutlet weak var imageButton: UIButton!

    @IBAction func imageButtonPush(_ sender: Any) {

        let image = UIImage(named: "icon")
        let imageView = UIImageView(image: image)
        imageButton.imageView? = imageView
    }
}

しかし、これでも画像がUIButtonに反映されませんでした。
そこでUIButtonをもう少し見てみると、 setImageメソッドを発見!こちらを試してみました。

ViewController.swift
class ViewController: UIViewController {
    @IBOutlet weak var imageButton: UIButton!

    @IBAction func imageButtonPush(_ sender: Any) {

        let image = UIImage(named: "icon")
        let state = UIControl.State.normal

        imageButton.setImage(image, for: state)

    }
}

上記実装でボタンを押下したところ、無事画像が切り替わりました。

Tanashun
Python/gRPC/AWS/iOSに興味があります。ラズパイ周りもちょっと詳しくなりました。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした