メモを削除できるようにする

ソースコード:MyColorMemoAppSwiftUI

//

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) {
        }
      }
    }
    
  }
  
  /// メモ一覧.
  var memoList: some View {
    List {
      ForEach(memoDataList, id: \.self) { memo in
        NavigationLink(
          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")
    }
  }
}

// MARK: View Components
extension HomeView {
    /// メモ一覧に表示するセル.
    func memoCell(_ memo: MemoDataModel) -> some View {
        VStack(alignment: .leading) {
            // メモのテキスト
            Text(memo.text)
                .font(.body)
            // メモの作成・編集日時
            Text(formatDate.string(from: memo.recordDate))
                .font(.footnote)
        }
    }
}

extension HomeView {
    // 表示形式を変更した日付
    var formatDate: DateFormatter {
        let formatter = DateFormatter()
        // Apple が推奨する固定フォーマット用ロケール
        formatter.locale = Locale(identifier: "en_US_POSIX")
        formatter.timeZone = TimeZone(identifier: "UTC")
        formatter.dateFormat = "yyyy-MM-dd HH:mm:ss Z"
        return formatter
    }
}

#Preview {
    HomeView()
}

  • ユーザー名:
  • 受講プラン:
  • 完了ステータス:未完了
cta_img

受講申し込みはこちらから

まずは受講用アカウントの作成からスタート。
iOSアカデミアの受講に必要な各種情報を記載した、ご案内メールをお届けします。

受講申し込み