# iOS | Swift/--- 공식 문서

UITableView 편집 모드와 관련된 속성들

jiniz.ll 2022. 2. 3. 15:47
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 버튼이 생김

 

  • 테이블 뷰의 스와이프 기능을 활성화하려면 (사용자가 행을 가로로 스와이프해서 삭제 버튼을 표시하려는 경우), 이 메서드를 반드시 구현해야 함

 

  • 이 메서드의 구현 내에서 setEditing(_:animated:) 를 호출하면 안됨
  • 어떤 이유로 호출해야 한다면, 딜레이 후에 perform(_:with:afterDelay:) 메서드를 사용해서 호출해야 함