はじめに
前回からの続きでSwiftUIのチュートリアル入門になります。
もと記事サイト
Step0
今回はリスト表示をするためのRow Viewを作成していきます。
UIKitでいうところのUITableviewCellといったところですかね。
Step1
前回のセクションで作成したViewsフォルダに新しくLandmarkRow.swift
ファイルを作成します。
Step2
新規追加したViewだとプレビューが表示されていない場合があるので、プレビュー画面のResume
ボタンをクリックしてプレビュー表示させます。
初回表示されるまでちょっと時間がかかりますが、プレビュー表示されました。
Step3
LandmarkRow
にvar landmark: Landmark
プロパティを追加します。
import SwiftUI
struct LandmarkRow: View {
var landmark: Landmark
var body: some View {
Text("Hello, World!")
}
}
struct LandmarkRow_Previews: PreviewProvider {
static var previews: some View {
LandmarkRow()
}
}
この時点ではLandmarkRow_Previews
にエラーが表示されます。LandmarkRow()
に初期化パラメータがないためです。
Step4
LandmarkRow_Previews
のLandmarkRow()
に初期化用のパラメータとして、配列landmarks
の最初の値を渡します。
import SwiftUI
struct LandmarkRow: View {
var landmark: Landmark
var body: some View {
Text("Hello, World!")
}
}
struct LandmarkRow_Previews: PreviewProvider {
static var previews: some View {
LandmarkRow(landmark: landmarks[0])
}
}
Step5
Text
をHStack
の中にいれます。Text
をCommand
押しながらクリックで表示されるポップバーのEmbed in HStack
を使うと便利です。
import SwiftUI
struct LandmarkRow: View {
var landmark: Landmark
var body: some View {
HStack {
Text("Hello, World!")
}
}
}
struct LandmarkRow_Previews: PreviewProvider {
static var previews: some View {
LandmarkRow(landmark: landmarks[0])
}
}
Step6
Text
の値をlandmark.name
に変更します。LandmarkRow(landmark: landmarks[0])
で渡された配列の先頭のlandmark
の名前が表示できます。
import SwiftUI
struct LandmarkRow: View {
var landmark: Landmark
var body: some View {
HStack {
Text(landmark.name)
}
}
}
struct LandmarkRow_Previews: PreviewProvider {
static var previews: some View {
LandmarkRow(landmark: landmarks[0])
}
}
注)Step3でエラーが表示された影響でプレビューが停止しているので、プレビュー画面のResume
ボタンをクリックして再開させます。
Step7
Text
の前にimage
、後ろにSpacer
を追加します。
import SwiftUI
struct LandmarkRow: View {
var landmark: Landmark
var body: some View {
HStack {
landmark.image
.resizable()
.frame(width: 50, height: 50)
Text(landmark.name)
Spacer()
}
}
}
struct LandmarkRow_Previews: PreviewProvider {
static var previews: some View {
LandmarkRow(landmark: landmarks[0])
}
}
テキストの前に画像が表示されました。Spacer
が無い場合、画像とテキストがセンター表示されますが、Spacer
を追加することでText
以降に余白を設定し、結果的に全体を左詰めにしています。
まとめ
リスト表示する際のRowが簡単に作成できましたね。
次回以降に登場するList
内のループで要素分表示すればリスト一覧が表示できます。
UIKitのUITableViewを使った場合、設定のためのコードをいくつか記載したりと、全体的に煩雑になりがちですが、SwiftUIは簡素にリスト表示が作成できますね。
コメント