//
import SwiftUI
import RealmSwift
struct MemoDetailView: View {
/// 新規作成または編集するメモの情報.
/// Binding($○○)で値を変更すると、自動的にRealmにも反映される
@ObservedRealmObject var memoData = MemoDataModel()
/// TextEditorのフォーカス.
@FocusState var isFocused: Bool
var body: some View {
TextEditor(text: $memoData.text)
.focused($isFocused)
.toolbar {
ToolbarItemGroup(placement: .keyboard) {
HStack {
Spacer()
keyboardCloseButton
}
}
}
.navigationTitle(dateFormatter.string(from: memoData.recordDate))
.onDisappear {
if !memoData.text.isEmpty {
saveData()
}
}
}
/// キーボードを閉じるボタン.
var keyboardCloseButton: some View {
Button(
action: {
isFocused = false
}, label: {
Text("done")
}
)
}
}
extension MemoDetailView {
/// Date型の値を年月日に表示を変換する.
var dateFormatter: DateFormatter {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy年MM月dd日"
return dateFormatter
}
/// Realmにメモデータを保存する.
func saveData() {
let realm = try! Realm()
try! realm.write {
memoData.recordDate = Date()
realm.add(memoData)
}
print(memoData)
}
}
#Preview {
MemoDetailView()
}