doneButtonTappedHandler, deleteButtonTappedHandler
우리는 현재 collectionView에서 Cell을 어떻게 표현하는가에 해당하는 프로토콜에 doneButtonHandler과 deleteButtonHandler의 기능을 구현하지 않았다.
기억을 상기시키기 위해서 해당 코드를 살펴보자.
TodoListCell에는 Closure로 정의된 doneButtonTapHandler과 deleteButtonTapHandler이 존재한다.
checkButtonTapped를 살펴보면 checkButton이 눌리게 되었을 때의 변경되어야할 상태 값을 변수에 지정하였다.
그렇다면 그 지정한 값들이 checkButton이 눌려졌을때 업데이트되어 Cell에 보여지게 해야할 것이다.
그 기능을 담은 클로져가 doneButtonTapHandler이다. 파라미터로 버튼이 눌린것인지 아닌지에 대한 데이터를 보내게 된다. deleteButtonTapped를 살펴보면 간단하다. 그냥 deleteButtonTapHandler을 호출하여 해당 데이터를 지우는 작업을 한다.
그런데 왜 짬때리듯이(서로 기능구현을 미루듯이) 코드를 짠 것일까?
이는 각각의 클래스 영역에서 해야할 기능이 존재하면 그것만 하도록 하여 클래스의 역할에 맞는 기능만 넣어서 분업을 확실히 하여 기술부채의 최소화와 유지보수 및 관리에 용이하도록 하기 위함이다.
그렇다면 이제 우리는 collectionView에서 Cell이 어떻게 구성되는지에 대한 기능을 담는 프로토콜에서 실제 버튼이 눌렸을 때에 대한 기능을 구현 해야한다. 렟고렟고
우리는 이전에 모든 코드로 부터 업데이트가 동작하도록 구현 하였는데, 실제 doneButtonTapHandler 와deleteButtonTapHandler의 기능은 구현하지 않았다 —> 우리는 지금부터 이 Closures의 비지니스 로직을 구현하도록 한다.
doneButtonTapHandler
우선 Bool type을 가지는 isDone이 인자로 들어오게 된다.
그렇다면 현재 indexPath.item에 해당하는 cell이 isDone값을 업데이트하면 된다.
그리고 isDone값이 변경된 것을 ViewModel에게 알려줘야한다.
그 후, 데이터 변경에 따른 collectionView를 reload 를 시행한다.
deleteButtonTapHandler
todo를 없애는 것을 ViewModel에게 알려주고 reload하면 된다.
'Toy Project > To Do List (iOS)' 카테고리의 다른 글
13. AddButtonTapped (0) | 2021.03.31 |
---|---|
12. Tap Gesture Recognizer (0) | 2021.03.20 |
11. Keyboard (0) | 2021.03.14 |
10. input text View 만들기 (0) | 2021.03.12 |
9. Storage 구현 (0) | 2021.03.09 |