「SwiftUI」.disabled()を使ってボタンの有効・無効(ざっくり)

SwiftUIでボタンの有効化・無効化の方法を調べたのでざっくりとメモしておきます。

以下コード全文

import SwiftUI

struct Sample: View {
    @State var text: String = "before"
    @State var canTap: Bool = false
    var body: some View {
        VStack {
            Button(action: {
                self.text = "after"
            }) {
                Text("クリック")
            }.disabled(canTap) // 引数がtrueだとボタンを無効化する
            
            Text(text)
            
            Toggle(isOn: $canTap) {
                Text("ボタンを無効化する")
            }
        }
    }
}

struct Sample_Previews: PreviewProvider {
    static var previews: some View {
        Sample()
    }
}

プレビュー↓
f:id:KEICON:20210502001212p:plain

仕組みは単純で、ボタンを無効化するをONにするとToggle()が発動してcanTapの値をtrueにするので「クリック」をタップすることができなくなります。
.disabledの引数にtrueが渡されるとボタンを無効化します。


.disabled(!canTap)


上記のように.disabledの引数の前に「!」をつけると、falseが渡されると無効化するという意味になります。