🗂

【SwiftUI】ボタンが押されたときに色を変える

2023/01/20に公開

はじめに

モディファイヤのプロパティを条件によって分岐させる方法です。備忘のための自分用メモです。

三項演算子を利用する

特別なことがない限りはこちらの方法が簡潔です。モディファイヤのプロパティに三項演算子を噛ませてBool変数に応じてモディファイヤの状態を変更します。
以下はボタンが押されたときにボタンの色を青から赤に変更します。

ContentView.swift
import SwiftUI

struct ContentView: View {
    @State private var useRedText = false
    
    var body: some View {
        Button("Hello, world!") {
            // flip the Boolean between true and false
            useRedText.toggle()
        }
        .foregroundColor(useRedText ? .red : .blue)
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

if文を利用する

if文を利用しても実現できます。ただし三項演算子を用いた方がスマートです。

var body: some View {
    if useRedText {
        Button("Hello World") {
            useRedText.toggle()
        }
        .foregroundColor(.red)
    } else {
        Button("Hello World") {
            useRedText.toggle()
        }
        .foregroundColor(.blue)
    }
}

Discussion