프로젝트 만들어보기

[iOS] TodoList 만들기 3/3 (.setEditing/commit editingStyle forRowAt/moveRowAt)

데브킹덕 2022. 10. 11. 16:46

 

setEditing 메서드를 이용해 Edit 버튼을 누를경우 편집모드로 전환하고

commit editingStyle forRowAt , moveRowAt을 이용해 cell을 삭제하고 순서를 변환을 가능하게 함

 

배운것들

1 . strong Outlet 변수

strong Outlet 변수 editButton추가

NavigationItem이 done이 되면 weak에 의해 메모리 해제가 일어나 더이상 재사용할 수 없음

 

 

 

2.Selector

- viewDidLoad에서 BarbuttonItem 생성

- selector안에 버튼을 눌렀을 경우 호출되는 메서드 doneButtonTap 추가 

 

objc) selector는 동적호출을 목적으로 매 class를 가리키는참조타입

swift) 구조체형식으로 정의되고 해당값의 값을 생성할 수 있게 됨

- selector에 전달할 메서드는 반드시 @objc를 앞에 붙여주어야함

- objc와 호환성을 위함, swift에서 작성한 메서드를 objc에서 인식하도록함

- done 버튼을 눌렀을때 setEditing 편집모드를 빠져나오게끔 함

 

 

 

 

3. setEditing

.setEditing메서드를 이용해 편집모드 활성화함

- edit버튼을 눌렀을때 taks배열이 비어있지 않을 경우에만 실행하도록 방어코드 작성함

- leftBarButton이 doneButton으로 변경되도록함

 

 

 

4. commit editingStyle forRowAt

- 편집모드 스타일일때 어떤셀을 없앴는지 확인할 수 있는 메서드

- 편집모드가 아니더라도 스와이프 방식을 통해 삭제가능해짐 

- tasks의 배열이 비게 되면 편집모드를 나가게끔 설정

 

5. moveRowAt

- 셀 재정렬할때 사용

- 행이 다른 위치로 이동하면 sourceIndexPath를 통해 원래 위치를 알려줌

- destionationIndexPath 파라미터를 통해 어디로 이동했는지 알려줌 

 

 

 

결과