2012-04-26 2 views
3

사용자가 항목을 만들 때 세부보기 또는 새로 추가 된 셀에서 돌아올 때 이전에 선택한 셀을 선택 취소하려는 테이블보기가 있습니다.테이블보기 데이터 다시로드 및 셀 선택 취소

그러나 때때로 새 항목이 추가되므로 reloadDataviewWillAppear:에 호출하여 테이블을 새로 고칩니다. 즉, self.clearsSelectionOnViewWillAppear = NO이 있더라도보기가 표시 될 때 셀을 선택하지 않았습니다. 셀렉트 애니메이션의 타이밍을 선택하고 (viewDidAppear:에서) 테이블 뷰가 나타납니다 후 셀 을 취소하여

이 (가 느리다하고 매끄러운 느낌을하지 않는, 자신을 위해 시도) 사용자에게 눈에 띄게 다르다.

테이블보기를 새로 고친 후에도 선택을 유지해야합니까? (상황에 따라 이전에 선택한 셀이나 새로 만든 셀을 선택 취소하고 싶습니다.) 아니면 어떻게 든 테이블의 데이터를 다르게 다시로드해야합니까?

답변

6

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 메서드에서 NSIndexPath을 저장할 수 있으며 뷰를 다시로드하면 해당 행이 선택 취소됩니다.

이 일의 또 다른 방법은 NSIndexPathUIViewController 당신이 만드는 그 UIViewController이 튀어 때, 당신은 특정 행을 선택 해제 현재 UITableViewController를 전달하여이 될 수 있습니다.

새 항목이 만들어지면 indexPath의 행 요소에 항목을 하나 추가하여 오른쪽 행의 선택을 취소합니다.

[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] 
         withRowAnimation:UITableViewRowAnimationNone]; 

[self.tableView selectRowAtIndexPath:indexPath 
          animated:NO 
         scrollPosition:UITableViewScrollPositionNone]; 

[self.tableView deselectRowAtIndexPath:indexPath animated:YES]; 
+0

감사를 회신 :

또한 변경 만 행을 다시로드 할 수있다. 방법 1의 경우 행을 선택 취소 할 방법을 어디에 추가해야합니까? 앞에서 언급했듯이'viewDidAppear :'에 추가하는 것은 표준 동작 (예 : 연락처 앱)과는 시각적으로 다릅니다. 선택 취소 애니메이션은 느리게 시작됩니다. 테이블 뷰 컨트롤러의'viewWillAppear :'에서'reloadData'를 호출하기 때문에 메서드 2가 작동하지 않습니다. 사용자는 애니메이션 선택 취소를 볼 수 없습니다. 내 테이블보기에서 데이터를 새로 고치는 더 나은 방법이 있습니까? 업데이트 된 데이터를 표시 할 필요가 있지만 선택 취소 애니메이션도 필요합니다. – James

+0

전체 테이블 대신 변경된 행을 방금 다시로드하면 어떻게됩니까? –

+1

나는 나의 대답을 더 많은 정보로 업데이트했다. –

관련 문제