func setEditing(_ editing: Bool, animated: Bool)
: 테이블 뷰의 편집 모드 전환 및 해제
Parameters
- editing : true 이면 편집 모드로 전환, false 이면 편집 모드 해제. 기본 값은 false
- animate : true 이면 애니메이션과 함께 전환, false 이면 즉시 전환
- editing 값이 true 로 설정된 채로 호출하면 테이블 뷰는 보여지는 각 UITableViewCell 객체에 setEditing(_:animated:) 를 호출하여 편집 모드로 전환함
- editing 값이 false 로 설정된 채로 호출하면 편집 모드가 해제됨
- 편집 모드에서 테이블의 셀은 셀의 구성 방법에 따라 각 셀의 왼쪽에 삽입 또는 삭제 컨트롤이 표시되고 오른쪽에 재정렬 컨트롤이 보여질 수 있음 (자세한 내용은 UITableViewCell 참고)
- 테이블 뷰의 data source는 tableView(_:canEditRowAt:) 를 구현하여 편집 모드에서 셀을 선택적으로 제외할 수 있음
var isEditing: Bool { get set }
- 이 프로퍼티 값이 true 이면 테이블 뷰는 편집 모드에 있는 것
- 테이블의 셀은 셀의 구성 방법에 따라 각 셀의 왼쪽에 삽입 또는 삭제 컨트롤이 표시되고 오른쪽에 재정렬 컨트롤이 보여질 수 있음
- 컨트롤을 누르면 테이블 뷰가 data source 메소드인 tableView(_:commit:forRowAt:) 을 호출함
- 기본 값은 false
optional func tableView(_ tableView: UITableView,
editingStyleForRowAt indexPath: IndexPath) -> UITableViewCell.EditingStyle
Parameters
- tableView : 이 정보를 요청한 테이블 뷰
- indexPath : An index path locating a row in tableView
Return Value
- indexPath 로 식별된 행에 대한 셀의 편집 스타일
- 이 메소드는 위임자(delegate)가 indexPath에 위치한 셀의 편집 스타일을 사용자 정의(customize)할 수 있도록 함
- 위임자가 이 메소드를 구현하지 않고 UITableViewCell 객체가 편집 가능한 경우(즉, isEditing 속성이 true로 설정된 경우) , 셀은 삭제(UITableViewCell.EditingStyle.delete) 스타일로 설정함
optional func tableView(_ tableView: UITableView,
commit editingStyle: UITableViewCell.EditingStyle,
forRowAt indexPath: IndexPath)
: Data source 에 receiver 의 특정 행을 삽입 또는 삭제하도록 요청함
Parameters
- tableView : 삽입 또는 삭제를 요청하는 테이블 뷰 객체
- editingStyle : IndexPath 로 지정된 행에 대해 요청된 삽입 또는 삭제에 해당하는 셀 편집 스타일. 가능한 편집 스타일은 UITableViewCell.EditingStyle.insert 또는 UITableViewCell.EditingStyle.delete 가 있음
- indexPath : An index path locating the row in tableView.
- 사용자가 테이블 뷰에 있는 UITableViewCell 객체와 연결된 삽입 컨트롤(녹색 플러스)이나 삭제 버튼을 누르면 테이블 뷰가 변경 사항을 커밋하라는 메시지를 data source 로 보냄
- (사용자가 삭제 컨트롤(빨간 마이너스)을 누르면 확인을 받기 위해 테이블 뷰에 삭제 버튼이 표시됨) → 삭제 컨트롤 누르면 스와이프가 된 것처럼 밀리면서 셀의 trailing 에 delete 버튼이 생김
- Data source 는 필요에 따라 UITableView 메서드인 insertRows(at:with:) 또는 deleteRows(at:with:) 를 호출하여 삽입 또는 삭제를 커밋함
- 테이블 뷰의 스와이프 기능을 활성화하려면 (사용자가 행을 가로로 스와이프해서 삭제 버튼을 표시하려는 경우), 이 메서드를 반드시 구현해야 함
- 이 메서드의 구현 내에서 setEditing(_:animated:) 를 호출하면 안됨
- 어떤 이유로 호출해야 한다면, 딜레이 후에 perform(_:with:afterDelay:) 메서드를 사용해서 호출해야 함
'# iOS | Swift > --- 공식 문서' 카테고리의 다른 글
iOS CoreLocation__ 위치 서비스 사용하기 (0) | 2022.07.05 |
---|---|
[Article] Choosing Between Structures and Classes (0) | 2021.12.27 |
[요약본] Method (0) | 2021.12.13 |