2022. 10. 30. 22:17ㆍSeSAC/과제
앱 만들면서 어려웠던 부분 정리한다. 내용은 앱 개선하는대로 계속 추가될 예정이다.
#. 메모 수정
문제
수정을 위해 기존데이터를 받아오는 과정이 어려웠음. ListVC에서 선택한 셀이 가진 데이터를 넘겨줘야 했는데 realm테이블을 전달해도indexPath를 처리할 방법에서 막혔음.
해결방법
1) realm테이블이 아니라 애초에 인덱싱이 되어있는 레코드를 전달해서 처리(note[indexPath.row]가 note테이블의 record기 때문에 이 값을 EditorVC에 넘겨줌)
2) ListVC-didSelectRowAt에서 indexPath.row값을 EditorVC에 넘겨준다. 그리고 EditorVC에서 realm테이블에 접근한 뒤indexPath.row값으로 인덱싱해서 처리.
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print(print(UserDefaults.standard.object(forKey: "createMemoButtonClicked")))
let dataView = MemoEditorView()
try! noteLocalRealm.write {
note[indexPath.row].editingOpened = true
}
MemoEditorView.memoEditingOpened = self.note[indexPath.row].editingOpened
MemoEditorView.memoData = self.note[indexPath.row].memoTitle //텍스트뷰에 선택한 셀 memoTitle 값전달
let vc = MemoEditorViewController()
vc.memoDataInRealm = note[indexPath.row]
//화면전환시 값전달한 VC로 화면전환(MemoEditorViewController()가 아니라 vc)
self.navigationController?.pushViewController(vc, animated: true)
}
문제
어떤 기준으로 메모 작성/수정 구분할지 고민함. 처음에는 테이블뷰에서 셀을 선택할때마다 realm데이터의 editingOpened값을 false->true로 처리하려고 했으나 텍스트뷰 초기값이 고정되어서 막힘.
해결방법
-. UserDefaults사용해서 메모작성버튼 클릭하면 UserDefaults가 not nil이 되고 not nil인 경우 레코드 추가 후 UserDefaults를 다시 nil로 변경했음. 그러면 createMemoButtonClicked 실행했을때 UserDefaults는 nil이기 때문에 메모작성(레코드 추가)할 수 있음.
@objc func createMemoButtonClicked() {
let vc = MemoEditorViewController()
MemoEditorView.memoData = ""
//메모작성버튼 클릭시 ud값 초기화해서 메모 작성/수정 구분
if UserDefaults.standard.object(forKey: "createMemoButtonClicked") == nil {
UserDefaults.standard.set("createOrEdit", forKey: "createMemoButtonClicked")
print(UserDefaults.standard.object(forKey: "createMemoButtonClicked")!)
} else {
print(#function)
}
self.navigationController?.pushViewController(vc, animated: true)
}
'SeSAC > 과제' 카테고리의 다른 글
074_MVVM+DiffableDataSource(Unsplash: Get a random photo) (0) | 2022.10.22 |
---|---|
018_환율 변동 프로그램 (0) | 2022.07.29 |
014_화면전환(present, push, pull) (0) | 2022.07.22 |
012-2 테이블뷰(해리포터 영화정보 화면) (0) | 2022.07.21 |
012-1 테이블뷰(쇼핑리스트) (0) | 2022.07.20 |