2011-10-04 2 views
0

에 내가있는 tableView의 셀을 반환해야 : cellForRowAtIndexPath를 : 몇 가지 조건이 true 인 경우에만, 예를 들면 : nil을 반환하는 것은 나에게 오류를 제공로드셀 선택적으로있는 TableView

if (condition == true) 
return nil; 
else 
return cell; 

.

답변

1

조건부로 UITableView에 셀을 추가하려면 좀 더해야합니다.

셀이 3 개인 경우 첫 번째 셀은 조건부라고 가정 해 보겠습니다. 당신이해야 할 첫 번째 일은이 조건을 기반으로 2 또는 3 개의 세포를 가지고 있습니다 :

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    if(condition) { 
     return 3; 
    } else { 
     return 2; 
    } 
} 

다음은 실제 세포를 반환 할 수 있습니다.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    if(condition) { 
     if(indexPath.row == 0) { 
      //create and return conditional cell 
     } else { 
      //create and return normal cell 
     } 
    } else { 
     //create and return normal cell 
    } 
} 

그리고 voila!

추신 : (모든 사항이 단일 섹션에서 수행되었다고 가정합니다. 여러 섹션으로 나누려면이를 고려해야합니다.)

0

UITableView에 공백을 넣을 수 없기 때문에 이것은 허용되지 않습니다. 최소한 빈 셀을 반환해야합니다. 너 뭐하려고?

TableView이 다음 셀을 검색하려고 시도 할 때 오류가 발생하고 nil을 가져 오면 아무리 다음 셀을 가져와야합니다. cellForRowAtIndexPath : 정확히 무엇을 당신이있는 tableview에 전화를하기 전에 조건 테스트를 수행 할 수 없었 여기서 뭘하려는 있습니다에 따라

0

하여 밖으로 올

EG

if(someCondition) 
{ 
    [self.tableview cellForRowAtIndexPath:indexPath] 
} 

또는 경우에이다 특정 조건을 충족하는 테이블 셀만 표시합니다. 원하는/조건부 테이블 데이터를 표시하는 데 사용할 NSArray에 tableview 데이터의 요소를 복사하는 함수를 만드는 것이 좋습니다.

IE numberOfRowsInSection에 대한 UITableDelegate 기능에서 다음

-(void)composeVisibleTableData 
{ 
    [m_visibleTableData removeAllObjects]; 
    for(NSObject* dataObject in m_tableDataArray) 
    { 
     if(someCondition)//dataObject meetsCondition 
     { 
      m_visibleTableData addObject:dataObject]; 
     } 
    } 

} 

: 및있는 tableview : cellForRowAtIndexPath : jQuery과 데이터 소스로 참조 m_visibleTableData.

0

당신은 셀의 데이터 소스가 설정되어있는 경우 :

를 조건을 확인하고 조건을 사용하여 데이터를 필터링한다.