0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ラジオボタン(選択肢)を作る(xcode)

Last updated at Posted at 2020-07-02

備忘録として。参考になったとしたら幸いです。

##できるもの
どれか一つだけを選択させたい時。他の選択肢をタップしたらそれまで選択されていたもののチェックが外れるようなものを作りたいなんかに。

IMG_0388.png

##使う知識
###isSelected
UIButtonにはisSelectedというBool型のプロパティがあります。(推されているかいないかの状態を表す。)
ボタンを押す時にそのisSelectedを反対にするには@IBActionの中に
radio1Button.isSelected = !radio1Button.isSelectedとすることで状態を変えることができます。

そして、その時他のボタンが選択されているつまりisSelectedがtrueならばfalseにすれば良いので

if radio2Button.isSelected {
            radio2Button.isSelected = !radio2Button.isSelected
        }

のようにします。
radio2Button.isSelected = falseでもOK
これを選択肢の数だけ行うことでラジオボタンを実装することができます。

###setImage
UIButtonのsetImageメソッドにはforという引数名があります。
radio1Button.setImage(uncheckedImage, for: .normal)
これは上述したisSelectedと密接に関わっていて、normalが選択されていない時、selectedが選択された時の状態を表します。
なのでsetImageの際にそれぞれの状態に応じた画像を決めることで、視覚的に選択されているのかどうかを表現することができます。
ex)normalにはハート、.selectedには塗りつぶされたハートを設定するなど

radio1Button.setImage(uncheckedImage, for: .normal)
radio2Button.setImage(uncheckedImage, for: .normal

機能そのものは

##ソースコード


override func viewDidLoad() {

        super.viewDidLoad()
radio1Button.setImage(uncheckedImage, for: .normal)
radio2Button.setImage(uncheckedImage, for: .normal


}
@IBAction func radio1Button(_ sender: Any) {
        radio1Button.isSelected = !radio1Button.isSelected
        reportString = "スパム/宣伝目的"
        if radio2Button.isSelected {
            radio2Button.isSelected = !radio2Button.isSelected
        }
        if radio3Button.isSelected {
            radio3Button.isSelected = !radio3Button.isSelected
        }
        if radio4Button.isSelected {
            radio4Button.isSelected = !radio4Button.isSelected
        }
        if radio5Button.isSelected {
            radio5Button.isSelected = !radio5Button.isSelected
        }
        if radio1Button.isSelected || radio2Button.isSelected || radio3Button.isSelected || radio4Button.isSelected || radio5Button.isSelected {
        submitButton.isEnabled = true
            submitButton.setTitleColor(UIColor.black, for: .normal)
        } else {
            submitButton.isEnabled = false
            submitButton.setTitleColor(UIColor.gray, for: .normal)
        }
    }

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?