
こんにちは!Shoriと申します。この記事では、Swift 5.10およびXcode 15.4を使用して、SwiftUIでtoggle()を使用して値を切り替える方法について、サンプルコードを交えながら説明しております。
初心者の方でも分かりやすいように、サンプルコードに適宜説明を入れながら解説していくので、ぜひご覧ください。
この記事を読んで分かること…
・ListとSectionを使い方
・ListとSectionにheaderを設定する
・ListとSectionの使い方(ForEachを組み合わせる方法)
実行環境
・実行環境:SwiftUI+XCode
・Swift:5.10
・XCode:15.4
・サンプルコードの実行確認日:2024年12月30日(月)
※ 今回紹介するtoggle()は、iOS13.0+, macOS10.15+以上で動作しますので、それ未満の場合はOSのアップデートが必要な場合があります。
Listとは?
@MainActor @preconcurrency
struct List<SelectionValue, Content> where SelectionValue : Hashable, Content : View
Listとはデータを各行に格納するコンテナを提供するViewです。
ListとSectionの使い方
概要
Listは、SectionというWidgetを使うことで行データを作成できます。
サンプルコード
import SwiftUI
struct BlogView: View {
var body: some View {
List {
Section {
Text("ID: OOOOOO")
Text("UserName: Hoge")
}
}
}
}
#Preview {
BlogView()
}
サンプルコードの説明
◾️行 1: SwiftUI
をインポートしています。
◾️行 2: BlogView
という構造体を定義する。
◾️行 4: List
を宣言します。
◾️行 5-6: カラム行を設定します。Section
を配置することで各行のデータを設定できます。#PreView
・ここでBlogViewを初期化してあげることで、XCodeの右部分にリアルタイムプレビューを表示させることが可能となります。
出力


ListとSectionにheaderを組み合わせる方法
概要
ListのSectionにheaderをセットすることができます。
サンプルコード
import SwiftUI
struct BlogView: View {
var body: some View {
List {
Section {
Text("お問い合わせ")
Text("退会")
} header: {
Text("困ったときは")
}
}
}
}
#Preview {
BlogView()
}
サンプルコードの説明
◾️行 1: SwiftUI
をインポートしています。
◾️行 2: BlogView
という構造体を定義する。
◾️行 4: List
を宣言します。
◾️行 5-6: カラム行を設定します。Section
を配置することで各行のデータを設定できます。
◾️行 7-9: ヘッダーを設定します。header
を宣言してその中にタイトルとして使うためのText
を定義します。#PreView
・ここでBlogViewを初期化してあげることで、XCodeの右部分にリアルタイムプレビューを表示させることが可能となります。
出力


ListとSectionにForEachを組み合わせる
概要
ListのSectionはForEachを使って生成することができます。
サンプルコード
import SwiftUI
struct BlogView: View {
let optionRows = ["ログアウトする", "マイページの設定", "バイブレーションの設定"]
var body: some View {
List {
Section {
ForEach(optionRows, id: \.self) { option in
Text(option)
}
} header: {
Text("ユーザーメニュー")
}
}
}
}
#Preview {
BlogView()
}
サンプルコードの説明
◾️行 1: SwiftUI
をインポートしています。
◾️行 2: BlogView
という構造体を定義する。
◾️行 3-4: OptionRows
という配列を定義し、行データの中身を宣言します。
◾️行 7: List
を宣言します。
◾️行 8: Section
を宣言します。
◾️行 9: ForEach
を宣言します。第一引数にOptionRows
を指定し、第二引数にOptionRows
の各アイテムを識別するためのidを自動で割り振るためのid: \.self
を書きます。
◾️行 10: option
を表示するTextを宣言します。
◾️行 12: セクションヘッダーを宣言します。#PreView
・ここでBlogViewを初期化してあげることで、XCodeの右部分にリアルタイムプレビューを表示させることが可能となります。
出力


まとめ
いかがでしたでしょうか?
この記事では、Listを用いたデータの表示について、基本的な使い方からForEachで自動的に生成する方法について解説を行いました。
ではまた、次の記事でお会いしましょう!



この記事があなたのスキルアップに役立ったなら、次のキャリアステップを踏み出す絶好の機会かもしれません。エンジニアとしてのさらなる成長と挑戦を求めるなら、未経験からエンジニア転職なら【Tech Stars Agent】をオススメします!
コメント