Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Fix] #165 - isEditMode 버튼 토글 및 activityRecordList 초기화 문제 해결 #166

Conversation

dlwogus0128
Copy link
Contributor

🌱 작업한 내용

  • isEditMode 버튼 토글 및 activityRecordList 초기화 문제 해결

🌱 PR Point

  • 삭제 이후 activityRecordList을 초기화해주지 않아서.. 삭제할 레코드가 계속 쌓여 두 번 이상 삭제가 안 됏던 것이엇습니다
  • 하다보니 편집 버튼 토글이 이상해서.. . (삭제 Alert가 사용자 취소에 의해 dismiss 되었을 때) 로직을 수정했습니다

📸 스크린샷

생략

📮 관련 이슈

Copy link
Collaborator

@lsj8706 lsj8706 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

리뷰 확인해주세요!

Comment on lines 175 to 177
let activityRecordInfoVC = ActivityRecordInfoVC()
activityRecordInfoVC.isEditMode = false
return
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

171줄 보면 deleteAlertVC에서 버튼 터치 액션을 지정해주고자 delegate도 사용하고 있고 여기에서는 클로저도 사용해서 2중으로 지정해주고 있네요
하나로 통일해야 할 것 같습니다.. 가능하면 delegate는 제거하고 이 클로저에서 삭제하는 함수 실행을 넣으면 될 것 같아요!

그리고! 지금처럼

 let activityRecordInfoVC = ActivityRecordInfoVC()
 activityRecordInfoVC.isEditMode = false

이렇게 하면 아예 새로운 ActivityRecordInfoVC를 만들고 그 뷰의 edit모드를 설정하는 거라 현재 사용자가 보고 있는 ActivityRecordInfoVC에는 아무런 영향이 없을거에요
그냥 저거 대신에 self?.isEditMode = false로 직접 현재 인스턴스의 프로퍼티를 변경하면 되지 않을까요?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아 클로저 안에서 현재 VC에 접근하려면 그냥 self?.하면 되는 거였군요....... 감사합니다

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

네 맞아요!
그래서 delegate와 클로저를 같은 용도로 사용할 수 있는거에요!
하위 뷰에서 동작할 작업을 부모 뷰(self)에서 지정해준다는 점이 핵심인거죠!

하지만 이렇게 클로저로 self를 넣을 수 있다는 점으로 인해 발생하는 문제가 바로 retain Cycle이고 ARC와 연관이 있습니다.
이 부분은 정말 중요하니 별도로 공부해보면 좋을거에요!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아!! 그랫군요 이해햇습니다 !! 그 부분 공부해볼게요!!

@@ -135,6 +137,7 @@ extension ActivityRecordInfoVC {
self.deleteRecordList.append(activityRecordList[indexPath.row].id)
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

self.deleteRecordList = selectedRecords.map { activityRecordList[$0].id }

이렇게 for ~ in 대신에 고차함수를 사용해 깔끔하게 작성하는 방법도 있습니다. 성능은 동일해요!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

와아!!! 감사합니다

Comment on lines +162 to +164
self?.wantsToDelete()
self?.isEditMode = false
return
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@dlwogus0128 dlwogus0128 merged commit 3d28027 into Runnect:develop Jun 1, 2023
@dlwogus0128 dlwogus0128 deleted the fix/#165-내-러닝-기록-삭제-문제-해결 branch June 1, 2023 08:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

[Fix] 내 러닝 기록 삭제 문제 해결
2 participants