【SwiftUI】Viewの編集モードについて

Viewの編集モードとEditButtonについて解説します。

スポンサーリンク

環境

この記事の情報は次のバージョンで動作確認しています。

【Xcode】11.6
【Swift】5.2.4
【iOS】13.6
【macOS】Catalina バージョン 10.15.6
スポンサーリンク

概要

編集モードとはユーザーがコンテンツを編集できるかどうかを示すViewの状態です。

いくつかのViewは編集モードに応じて編集機能を提供します。
例えばListビューではselectionパラメータのあるイニシャライザで初期化された場合、ラジオボタンを表示して項目の選択が可能になります。
また、ForEachビューで、onDelete()関数、onMove()関数が記述されている状態で、削除操作・移動操作が可能になります。

Viewの編集モードを切り替える専用のボタンとしてEditButtonがあります。

使用例

EditButtonで編集モードを切り替えて、リストの項目削除操作を有効にする例です。

EditButton使用例

スポンサーリンク

環境変数editMode

Viewの編集モードは環境変数editModeの値によって決まります。
editModeは、次の3つのいずれかの値を持ちます。

意味
active 編集可能
inactive 編集不可
transient 一時的な編集モード
(スワイプジェスチャ中などに設定される)

editModeの参照方法

editModeにアクセスするには次の手順が必要です。

①Environmentプロパティラッパーで、環境変数editModeを取得

②値にアクセスするにはwrappedValueを使用します。
値の参照と設定の両方可能です。

isEditingプロパティを使うと、編集モードが編集中(active)か否か取得可能です。

使用例

編集モード時のみテキストを編集可能にする例です。

editMode変数へのアクセス

スポンサーリンク

あわせて読みたい記事

【SwiftUI】編集モードの取得に関する不具合
編集モード(editMode)の取得に関する不具合と思われる現象に遭遇したので、対処方法と一緒に記録を残しておきます。
Kindle unlimited 読み放題で読める管理人のおすすめ本です!
スポンサーリンク
SwiftUI
カピ通信