2011-11-08 2 views
23

나는 인터페이스 빌더을 통해 수동으로 생성 한 UITableView과 일부 UITableViewCells을 가지고 있습니다. 각 셀에 outlet을 할당했으며 CellForRowAtIndexPath 방법으로 UITableView에 연결했습니다. 이 방법에서는 switch(case) 메서드를 사용하여 UITableView에 나타나는 특정 셀을 대소 문자에 따라 구분합니다.특정 UITableViewCell이 UITableView에 표시되는지 확인

이제 특정 세포를 찾고 그가 UITableView 안에 존재하는지 확인하고 싶습니다. 나는 방법 : UITableView.visibleCells을 사용하여 테이블 뷰에서 셀의 배열을 가져온다. 내 질문은 - 배열에 특정 세포가 있는지 어떻게 확인할 수 있습니까? 어떻게 든 배정 된 콘센트를 사용할 수 있습니까? - (최선의 해결책), 또는 식별자를 어떻게 사용할 수 있습니까? 셀이이 전무를 반환합니다있는 tableView에 존재하지 않는 경우

[tableView indexPathForCell:aCell]; 

:

감사합니다 :)

답변

74

참고 :이 indexPath이 (실제 셀 필요가없는) 경우

NSUInteger index = [_people indexOfObject:person]; 
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:index inSection:0]; 
    if ([self.tableView.indexPathsForVisibleRows containsObject:indexPath]) { 
     [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] 
          withRowAnimation:UITableViewRowAnimationFade]; 
    } 

저렴 수 있습니다.

PS : _people은이 경우 내 백엔드로 사용됩니다. NSArrayUITableViewCell가 표시되는 경우

+3

이 솔루션은 대부분의 경우 수용된 솔루션보다 낫습니다. – Envil

+0

이것은 완벽하게 작동합니다 !! 감사:) – Gaurav

11

당신은 jQuery과 방법을 사용할 수 있습니다. 그렇지 않으면 셀의 NSIndexPath를 가져옵니다.

+1

그게 작업의 감사 – ozking

+4

이 그것을 +1 –

+0

세포를 재사용 할 때, 감사합니다 :) – iLearner

16
if ([tableView.visibleCells containsObject:myCell]) 
{ 
    // Do your thing 
} 

사용자가 관심있는 셀을 포함하는 별도의 인스턴스 변수가 있다고 가정합니다. 질문에서 생각 하듯이 명확하지 않습니다. 당신은뿐만 아니라 indexPathsForVisibleRows이 방법을 사용할 수 있습니다

+0

감사를 작동, 작동하지 않습니다, Sorig이 준 솔루션을 구현하는 또 다른 방법입니다. – ozking

+0

셀이 표시되면이 질문에 대한 정답입니다. 깨끗하고 간단한 대답에 감사드립니다. –

0

당신은 확인 스위프트 3이 작업을 수행 할 수 있습니다

let indexPathToVerify = IndexPath(row: 0, section: 0) 
let cell = tableView.cellForRow(at: indexPathToVerify) 

if tableView.visibleCells.contains(cell) { 
    // the cell is visible 
} 
관련 문제