2013-09-01 2 views
2

두 개의 서로 다른 사용자 정의 셀을 작성한 UITableView가 있습니다. 하나는 "RegularCell"이고 다른 하나는 "BigCell"입니다. 그 이유는 데이터 모델 객체에 대해 다른 표현이 필요하기 때문입니다. 특정 경우에는 데이터를 다르게 표시하고자합니다.iOS >> 높이가 다른 두 개의 사용자 정의 UITableViewCell이있는 UITableView

내가 cellForRowAtIndexPath 대 heightForRowAtIndexPath을 통해 접근 할 수있는 방법에 대해 조금 읽을 수 있지만 내 표에서 >> 내 경우에 접근하는 방법을 명확하지 않다, 나는 어떤 행 것이다 사전에 몰라 어떤 사용자 지정 셀을 포함; 이 데이터는 cellForRowAtIndexPath에서만 가져올 수 있습니다. 여기서 데이터 배열에서 특정 행을 나타낼 필요가 있는지 확인합니다.

이 cellForRowAtIndexPath 전체 아이디어는 사전에 모든 세포를 생성하고 바로 스크롤 크기와 같은 것들에 대한 '공간을 마련 "하지 않는 것이이되기 전에이 호출 이후 heightForRowAtIndexPath에서 계산을 할 바보 같다.

반면에 내가 어떤 콘텐츠를 나타내고 있는지 알 때에 만 내가 필요한 셀을 알 수 있고 따라서 행 높이가 무엇인지 알 수 있습니다.

누구나 그런 사례가있어서 지혜를 공유 할 수 있습니까?

답변

2

다윗이 옳다!

난 당신이 내 테이블에서

말에 동의하지 않는다, 나는 사용자 정의 셀을 포함하는 행 사전에 모른다; 난 단지 특정 경우에 대해 표현할 필요가 어떤 데이터 배열을 체크 cellForRowAtIndexPath 에서이 데이터를 얻을 행.

heightForRowAtIndexPath에서

당신은 당신이 cellForRowAtIndexPath에서 그것을 같은 방식으로 데이터 소스에 액세스 할 수 있습니다

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    CGFloat bigCellHeight = 80.0; 
    CGFloar regularCellHeight = 44.0; 
    MyDataObject *object = [myArray objectAtIndex: indexPath.row]; 
    if ([object anyConditionToChoseBigCell]) { 
     return bigCellHeight; 
    } 
    return regularCellHeight; 
} 
1

heightForRowAtIndexPath는 스크롤 뷰 세포가 표시 될 것 시간에 화면에 표시해야한다 무엇을 할뿐만 아니라 것입니다 얼마나 큰 알 필요가 layouter있는 tableView으로 cellForRowAtIndexPath 전에 호출되고,이은에 따라 달라질 수 있습니다 각 셀의 높이.

전에이 문제를 보았습니다. 그리고 내 추천은 tableView를 실행하기 전에 모델의 각 셀 높이를 계산하는 것입니다.

0

비슷한 문제가있었습니다. 그건 내가 함께 결국 무엇을 :

-(CGFloat)tableView:(UITableView *)tableView 
heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
return cell.frame.size.height; 
} 
0

OK ... 내가 쉬운 해결책을 찾았을 - 나는 데이터 객체의 배열을 가지고 있기 때문에, 나는 각 행마다 관련 데이터 객체 관련 속성 >>을 확인할 수 있습니다. 내 경우에는 isSuper >>라는 BOOL 값이 있습니다.이 방법으로 DB의 각 객체 당 행 높이를 만들거나 업로드 할 필요없이 설정할 수 있습니다 heightForRowAtIndexPath에있는 실제 UITableViewCell

관련 문제