메모 삭제 구현
StoryBoard 버튼 추가
- 삭제 버튼 추가
- Flexible Space Bar Button 추가
![](https://velog.velcdn.com/images/rudin_/post/901d436a-fb02-41f1-a0ce-9ce525c3f425/image.png)
삭제 버튼 액션 추가
- deleteMemo 메소드 추가
![](https://velog.velcdn.com/images/rudin_/post/125ca4a6-6ffd-426e-adc3-bee99d044f94/image.png)
UIAlertAction
의 style
에서 .destructive로 설정 시 글씨가 붉은색으로 표시된다.
![](https://velog.velcdn.com/images/rudin_/post/fc8b5c9b-8af0-44ea-ad8f-033333904745/image.png)
- 현재는 메모를 삭제하는 메소드를 구현하지 않은 상태
삭제 메소드 추가
- 데이터와 관련 있는 메소드이므로
DataManager
에서 작성
![](https://velog.velcdn.com/images/rudin_/post/434ae0a5-add6-44ad-a7a9-e5942138d17e/image.png)
![](https://velog.velcdn.com/images/rudin_/post/122ba50e-98f8-4421-aae4-b9c8f5dbaf66/image.png)
self?,memo
를 통해 현재 표시된 창의 메모를 삭제.
- 메모를 삭제했으므로 현재 창이 유지되면 안됨.
- 이전 화면으로 돌아가야 함
- 이전 화면으로 돌아가려면 화면을 pop 해야 함
- navigation controller에 접근하여 현재 화면 pop
![](https://velog.velcdn.com/images/rudin_/post/113e30ba-a0b7-4708-941a-3236146e71fc/image.png)
실행 화면
![](https://velog.velcdn.com/images/rudin_/post/e32ad17a-f0e9-4a6f-a15b-b923e9faa386/image.png)
삭제 버튼을 선택하면 이전 화면으로 돌아가짐(테이블뷰)
목록 화면에서 메모 삭제 구현
아이폰 사용 시 cell을 왼쪽으로 스와이프하면 삭제 버튼이 표시되는 방식
삭제 기능 지원을 위해서는 DataSource 메소드를 구현해야 함.
tableView func
테이블뷰에서 삭제 기능을 구현하려면 하단의 세 가지 메소드를 구현해야 함.
![](https://velog.velcdn.com/images/rudin_/post/5863382c-59a5-4570-a46d-89d812fbafe8/image.png)
- 해당 메소드가 true를 리턴하면 편집 기능이 활성화된다.
편집 스타일 지정
![](https://velog.velcdn.com/images/rudin_/post/874b5ffe-f025-43ed-96bc-8ece90cb4ed7/image.png)
삭제 메소드 작성
![](https://velog.velcdn.com/images/rudin_/post/aa946d94-86ab-434f-8444-a54421cfe925/image.png)
실행
![](https://velog.velcdn.com/images/rudin_/post/63983f66-fc60-4375-aedf-2409b6bd1568/image.png)
삭제 바는 뜨지만, 삭제 버튼을 누를 시 크래시 발생
문제 해결
![](https://velog.velcdn.com/images/rudin_/post/7c72e0b9-b4a9-4b90-843e-4dd3e5ecf054/image.png)
- DataManager에서 먼저 메모를 삭제함.
- tableView에서 이어서 메모를 삭제하는데, 여기에서는 memoList 배열에 저장된 메모를 나타낸다. 여기에는 여전히 삭제된 메모를 저장하고 있다.(memoList는 우리가 DataManager에서 별도로 만들어둔 배열이지, 데이터에 있는 내용이 아니다.)
- 따라서 테이블뷰에 표시된 셀 숫자와 배열에 저장된 데이터 숫자가 달라진다.
![](https://velog.velcdn.com/images/rudin_/post/7317b2e5-bd88-422d-827e-5035f20e516b/image.png)
따라서 memoList에서도 삭제해주면 된다.