disabledモディファイアとは
SwiftUIで利用されるViewのプロパティで、そのViewが無効になるかどうかを制御します。
具体的にはViewが無効化されると、ユーザーがそのViewを操作できなくなります。
ユーザーに対して操作が許可されていないことを明示的に示す場合や、特定の条件下でのみ操作を許可する場合などに便利です。
公式ドキュメント:
https://developer.apple.com/documentation/swiftui/view/disabled(_:)
disabledに辿り着いた背景
TextFieldが空の状態で、画面遷移するボタンを押したら警告の通知が表示されるようにしたい。
.onTapGesture {
if inputText.isEmpty {
showAlert = true
}
}
上記の処理だけでいけるかと思いきや、
通常通りボタンが押されてしまい、アラートが表示されない...
何かがおかしい...
不具合の原因
Viewにdisabledモディファイアが付いていない為、ボタンが常に有効な状態のままとなっていました。
つまり、TextFieldが空であってもボタンをタップすることができてしまうということ。
いたって単純ですが、知らないと悩む箇所ですよね。
主な使い方
通常のViewに .disabled(true) もしくは .disabled(false) を設定することで、
そのViewを手動で無効化または有効化できます。
ボタンの場合、条件によってボタンを無効にすることがあります。
たとえば、今回のようにテキストフィールドが空の場合にボタンを無効にするといった場合です。
このような場合には、ボタンに .disabled(condition) を設定し、condition の値に応じてボタンを無効化するかどうかを制御します。
Button("Submit") {
// Submitボタンのアクション
}
.disabled(inputText.isEmpty) // inputTextが空の場合はボタンを無効化
参考記事