はじめに
前回からの続きでSwiftUIのチュートリアル入門になります。
もと記事サイト
Building lists and navigation | Apple Developer Documentation
With the basic landmark detail view set up, you need to provide a way for users to see the full list of landmarks, and t...
Step0
今回は、前回勉強したリスト表示にナビゲーションを付けて、一覧画面から詳細画面への画面遷移ができるようにします。
アプリケーション作成していると必ず使用する、よくあるパターンですね。
Step1
新規でSwiftUIテンプレートからLandmarkDetail.swift
を作成します。
import SwiftUI
struct LandmarkDetail: View {
var body: some View {
Text("Hello, World!")
}
}
struct LandmarkDetail_Previews: PreviewProvider {
static var previews: some View {
LandmarkDetail()
}
}
Step2
前回までに作成したContentView.swift
の中身(VStack
部分)をコピーして貼り付けます。
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
MapView()
.ignoresSafeArea(edges: .top)
.frame(height: 300)
CircleImage()
.offset(y: -60)
.padding(.bottom, -60)
VStack(alignment: .leading) {
Text("Turtle Rock")
.font(.title)
HStack {
Text("Joshua Tree National Park")
.font(.subheadline)
Spacer()
Text("California")
.font(.subheadline)
}
.font(.subheadline)
.foregroundColor(.secondary)
Divider()
Text("About Turtle Rock")
.font(.title2)
Text("Descriptive text goes here.")
}
.padding()
Spacer()
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Step3
ContentView.swift
の中身をLandmarkList
に変更します。
import SwiftUI
struct ContentView: View {
var body: some View {
LandmarkList()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
前回作成したリストがそのまま表示されましたね。
Step4
前回作成したLandmarkList.swift
のリスト表示部分を、NavigationView
で囲みます。
import SwiftUI
struct LandmarkList: View {
var body: some View {
NavigationView {
List(landmarks) { landmark in
LandmarkRow(landmark: landmark)
}
}
}
}
struct LandmarkList_Previews: PreviewProvider {
static var previews: some View {
LandmarkList()
}
}
ヘッダー部分に余白ができましたね
Step5
navigationTitle
を使ってナビゲーションにタイトルを表示します。
import SwiftUI
struct LandmarkList: View {
var body: some View {
NavigationView {
List(landmarks) { landmark in
LandmarkRow(landmark: landmark)
}
.navigationTitle("Landmarks")
}
}
}
struct LandmarkList_Previews: PreviewProvider {
static var previews: some View {
LandmarkList()
}
}
Step6
List
内のLandmarkRow
をNavigationLink
で囲みます。
import SwiftUI
struct LandmarkList: View {
var body: some View {
NavigationView {
List(landmarks) { landmark in
NavigationLink(destination: LandmarkDetail()) {
LandmarkRow(landmark: landmark)
}
}
.navigationTitle("Landmarks")
}
}
}
struct LandmarkList_Previews: PreviewProvider {
static var previews: some View {
LandmarkList()
}
}
遷移できることを示す矢印のアクセサリーが表示されました。
Step7
プレビュー画面のライブモードボタンを押すと、リアルタイムでセルを押した際の画面遷移が確認できます。
まとめ
とても簡単にナビゲーションを使った画面遷移が実装できましたね。
今回はどのセルを押しても同じ詳細画面へ遷移しているので、次回は個別の詳細画面へ遷移できるようにしていきます。
コメント