import SwiftUI
import RealmSwift
struct HomeView: View {
@ObservedResults(MemoDataModel.self) var memoDataList
var body: some View {
NavigationStack {
VStack {
memoList
// Spacerを下に入れることで、メモ一覧を上に詰めるように表示させる
Spacer()
}
// NavigationBarに設置するボタンなどを定義
.toolbar {
// 右上:新規メモ作成
ToolbarItem(placement: .navigationBarTrailing) {
memoCreateLinkButton
}
}
}
}
/// メモ一覧.
var memoList: some View {
List {
ForEach(memoDataList, id: \.self) { memo in
// NavigationLinkは画面遷移を行うViewです
// タップでdestinationに記載したViewへNavigation遷移
NavigationLink(
// 画面遷移する際にタップしたセルのMemoDataを渡す
destination:
MemoDetailView(memoData: memo)
) {
memoCell(memo)
}
}
}
.listStyle(.plain)
}
/// メモ作成ボタン.
var memoCreateLinkButton: some View {
// NavigationLinkはTextだけでなく画像やViewでも設定できる
NavigationLink(
// onAppearで生成した新しいMemoDataを渡す
destination:
MemoDetailView(memoData: MemoDataModel())
) {
Image(systemName: "plus")
}
}
}