2012-09-08 2 views
2

UITableView 행을 스 와이프하면 삭제 단추가 표시됩니다. 그런 다음이 테이블에 항목을 추가하면 행이 삽입되지만 삭제 단추는 동일한 색인에 머물러 있기를 원하므로 동일한 슬롯에있는 행으로 이동합니다.행이 스 와이프 된 경우에만 UITableView에서 삭제 단추 제거

새 항목을 추가하기 위해 모달을 표시 할 때 행에서 삭제 단추를 제거해야합니다. 즉, 편집을 NO으로 설정하고 싶습니다. 그러나 간단하지 않습니다 - 사용자가 편집 버튼을 통해 입력 한 경우 편집 모드를 종료하고 싶지 않습니다. 사용자를 테이블을 떠난 상태로 되돌리고 싶습니다.

그렇다면 UITableView에 삭제 버튼을 제거하지만 수정 모드를 종료하지 말하라고 명령하는 방법은 무엇입니까? 사용자가 '편집'을 탭한 다음 '-'아이콘을 사용하여 삭제 버튼을 표시하는 경우에도 버튼을 제거하고 필요한 경우 수정 모드를 유지하도록 테이블에 알려야합니다.

답변

1

UITableViewCell 인스턴스는 자신의 editing property (다른 속성 (예 : editingAccessoryType)과 더 관련이 있음)을 기억해야합니다. 새 행을 추가 할 때 테이블보기의 editing 속성을 그대로 둘 수 있지만 사용자가 편집 중이던 이전 행과 방금 삽입 한 새 행에 대한 editing 속성을 수동으로 업데이트하십시오.

+0

그러나 삭제 단추가 표시된 셀을 지정하는 방법이 필요합니다. isEditing을 체크하는 보이는 셀을 반복한다면, 사용자가 전체 테이블 뷰를 편집 모드로 놓았을 때 모든 셀에 대해 거짓 긍정 (false positive)을 얻게 될 것입니다. –

+1

'-tableView : willBeginEditingRowAtIndexPath :'델리게이트 호출을받을 때 업데이트되는 편집 모드의 셀에 대한 내부 상태를 유지해야 할 수도 있습니다. 그것은 최선의 해결책은 아니지만 나는 동의한다. 그러나 나는 다른 것을 생각할 수 없다. – Tim

+0

나는 그 일을 생각하고있다. 그러나 정확하게 isEditing이 아닌 정확히 어떤 상태 (0, 1, 2 또는 3)인지 알고 싶다면 willTransitionToState를 사용자 정의하고 무언가를 저장해야 할 필요가 있다고 생각한다. 나는 그것을 줄 것이다. –