2013-08-22 2 views
1

UITableViewCell에 제스처 인식기를 추가하여 셀을 동일한보기 컨트롤러 내의 다른보기로 드래그했습니다. 이를 위해 셀에 긴 프레스 제스처 인식기를 추가했습니다.UITableViewCell에서 동적으로 삭제 기능을 사용/사용 중지합니다.

하지만 셀을 드래그하지 않을 때 기능을 삭제하려면 스 와이프해야합니다. 그러나 드래그를 시작하고 한 방향 (오른쪽 또는 왼쪽)으로 움직이면 Cell은 스 와이프 - 삭제 (기본값)를 호출합니다.

이 순간에이 호출을 중단해야합니다. tableView를 다시로드하는 것은 옵션이 아닙니다. 다시로드 한 후 드래그를 위해 선택된 셀을 풀었습니다.

+0

시도해 보았습니다. 그러나이 함수는 매번 테이블이 다시로드되고 .... 이미 언급했듯이 테이블을 다시로드 할 수 없습니다. 또한 editingstyle 속성은 셀의 읽기 전용 속성입니다 ...... –

답변

0

몇 가지 추측은 그 중 하나는 tableView:shouldIndentWhileEditingRowAtIndexPath: 위임 방법을 확인 당신이 -

  1. 작동합니다.
  2. 편집 모드를 끄면 여러 제스처를 처리하는 기능과 함께 직접 스 와이프 제스처와 길게 누르기 동작을 넣을 수 있습니다.

이제 긴 누르기 시간을 늘리거나 여러 제스처를 감지하는 기능을 추가하면됩니다. 코드 아래

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 
{ 
    return YES; 
} 
+0

맞춤 스 와이프 - 삭제 제스처를 제안 하시겠습니까? –

+0

자, 여기서 할 수있는 것은 길게 누르는 시간을 늘리거나 여러 제스처를 감지하는 기능을 추가하는 것입니다. '- (BOOL) 제스처 인식기 : (UIGestureRecognizer *) 제스처 인식기는 다시 인식해야 함 제스추어 인식기 : (UIGestureRecognizer *) otherGestureRecognizer { return YES; }' –

+0

@anky_beliveMe --- 감사합니다 ... 괜찮 았는데 ..... 그냥 내 기능을 수행하기 위해서 {return No;}했습니다. –

2

시도는이 방법에서 사용할 수 indexPath를 사용하여 당신은 특정 섹션에서 특정 행을 삭제 슬쩍을 해제 할 수 있습니다

- (UITableViewCellEditingStyle)tableView:(UITableView *)aTableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
// Detemine if it's in editing mode 
if (self.editing) 
{ 
    return UITableViewCellEditingStyleDelete; //enable when editing mode is on 
} 

return UITableViewCellEditingStyleNone; 
} 

IOS에서 사용할 수있는 UITableViewDelegate 방법 중 하나

스위프트 3 버전 :

func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle { 
    if tableView.isEditing { 
     return .delete 
    } 
    return .none 
} 
+0

이 작동하지 않습니다!? –

관련 문제