APP-iOS3rd / PJ3T2_Mymory

멋쟁이사자처럼 iOS 앱스쿨 3기 팀 프로젝트
10 stars 3 forks source link

Feat/keep writing memo : 메모 연속 작성 및 CRUD를 막힘없이 빠르게 할 수 있게 수정 하였습니다. #248

Closed jeonguk29 closed 7 months ago

jeonguk29 commented 7 months ago

PR 가이드라인

PR Checklist

PR 날릴 때 체크 리스트

PR Type

어떤 종류의 PR인가요?

연관되는 issue 정보를 알려주세요

Issue Number: #249

PR 설명하기

CRUD를 딜레이 없이, 그리고 에러 없이 작성되도록 수정 하였습니다. 크게 메모를 한번 작성하고 다시 작성하려고 하면 작성되지 않는 오류와, iOS17버전에서 navigationBar를 사용했을 때 발생하는 문제를 toolbar로 대응하여 해결하였습니다. (navigationBar 사라지지 않는 문제)

어떻게 작동하나요? code 기반으로 설명해주세요

PostView에 커스텀으로 작동하던 navigationBar를 수정하였습니다.

.toolbar {
                ToolbarItem(placement: .principal) {
                    Text(isEdit ? "메모 수정" : "메모 등록")
                }
                ToolbarItem(placement: .navigationBarLeading) {
                    if isEdit {
                        Button(action: {
                            presentationMode.wrappedValue.dismiss()
                        }) {
                            HStack {
                                Image(systemName: "chevron.backward")
                                Text("뒤로")
                            }
                        }

                    }
                }
                ToolbarItem(placement: .navigationBarTrailing) {
                    if isEdit {
                        HStack(spacing: 20) {
                            Button(action: {
                                Task.init {
                                    print("휴지통 버튼이 탭되었습니다!")
                                    await viewModel.deleteMemo(memo: memo)
                                    DispatchQueue.main.async {
                                        presentationMode.wrappedValue.dismiss()
                                    }
                                }
                            }) {
                                Image(systemName: "trash")
                                    .foregroundColor(.red)
                            }

                            Button(action: {
                                viewModel.loading = true
                                LoadingManager.shared.phase = .loading
                                viewModel.editMemo(memo: memo)
                                isEdit = false
                            }, label: {
                                Text("수정")
                            })
                            .disabled(viewModel.memoTitle.isEmpty || viewModel.memoContents.isEmpty || viewModel.userCoordinate == nil)
                        }
                    } else {
                        Button(action: {
                            viewModel.loading = true
                            LoadingManager.shared.phase = .loading
                            viewModel.saveMemo()
                        }) {
                            Text("저장")
                        }
                        .disabled(viewModel.memoTitle.isEmpty || viewModel.memoContents.isEmpty || viewModel.userCoordinate == nil)
                    }
                }
            }

MemoDetailView 에서 수정으로 이동할때 발생하는 navigationBar에러를 해결 하였습니다. 뒤로 돌아오는 현상 및 navigationBar 깨짐

 .toolbar {

            ToolbarItem(placement: .principal) {
                Text(" ") // 중앙 뷰
            }
            ToolbarItem(placement: .navigationBarTrailing) {
                HStack {
                    NavigationBarItems(isHeart: $isHeart, isBookmark: $isBookmark, isShowingSheet: $isShowingSheet, isReported: $isReported, isShowingImgSheet: $isShowingSheet, isMyMemo: $isMyMemo, memo: $memos[selectedMemoIndex!])
                }
            }
        }

navigationBarItems.swift

  if isMyMemo {
                Button(action: {
                    isPostViewActive = true
                }) {
                    Image(systemName: "pencil")
                        .font(.semibold20)
                }
                .fullScreenCover(isPresented: $isPostViewActive) {
                    PostView(selected: .constant(1), isEdit: true, memo: memo)
                        .navigationBarHidden(true)
                }
            }

가능하다면 추가해주세요

변경 사항 스크린샷 혹은 화면 녹화

https://github.com/APP-iOS3rd/PJ3T2_Mymory/assets/54401641/bf1d0042-c4af-499a-8cbc-99d5cd134b89

스크린샷

Test 여부

Test 정보

//예시
let testDatas: [TestData] = [.init(...),...]

기타 언급해야 할 사항들