2010-07-06 2 views
0

이것은 내가 지금 당면하고있는 문제이다.한 섹션에 대한 heightForRowAtIndexPath?

두 개의 섹션으로 구성된 UITableViews를 많이 가지고있다. 필요할 때마다 하나만 표시된다. 첫 번째 섹션에는 크기가 조정될 필요가있는 세 개의 셀이 있습니다. 그 때문에, 나는 heightForRowAtIndexPath를 사용하고있다.

두 번째 섹션에는 최대 높이가 44 포인트 인 모든 셀이 3.000 개까지있을 수 있습니다.

내 heightForRowAtIndexPath는 섹션 1 또는 섹션 2의 셀을 처리 중인지 여부를 결정한 다음 기본값 (섹션 1)을 측정하거나 즉시 반환합니다 (44 섹션 2).

이 방법을 사용하면 heightForRowAtIndexPath가 이와 같은 경우 (약 1.000 셀 이상) 성능 문제가되기 때문에 큰 테이블보기가 표시되는 데 다소 시간이 걸립니다.

내 질문 : 첫 번째 섹션에서 제시된 3 개의 셀의 크기를 조정할 수있는 방법이 있습니까? 어떤 식 으로든 heightForRowAtIndexPath를 indexPath.section == 0에 대해서만 호출하도록 강제 할 수 있습니까?

차이가있을 경우 그룹화 된 표보기를 사용하고 있습니다.

감사합니다.

답변

10

heightForRowAtIndexPath은 위임자에서 구현되는 경우 호출됩니다. 첫 번째 섹션의 값만 변경하려는 경우 간단한 if 문을 사용하십시오. 다음과 같이 표시 될 수 있습니다.

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
    // Test to see what section you're in 
    if ([indexPath section] == 0) { 
     // return the height for the first section 
    } else { 
     // return the height for everything other than the first section 
    } 
} 

건배.

+0

은'스위치 case' 나무는 훨씬 청소기 접근 방식 'indexPath' 섹션 값을 테스트하고 원하는 높이를 반환하는 것과 같은 생각입니다. –

+0

그건 내 코드에서 실제로 어떻게 보이는지입니다. 문제는 매우 큰 테이블 뷰가있는 경우 성능이 저하된다는 것입니다.하지만 3 개의 셀로 인해 테이블 ​​뷰가 필요합니다. 그래서 내가 알고 싶었던 것은이 문제를 해결할 수있는 방법이 있는지입니다. –

+0

당신이 고려할 수있는 또 다른 접근법 (문제 영역에서 작동하는 경우)은이 정보를 UITableViewCell에 배치하지 않습니다. 이 정보를 tableview의 헤더로 표시하는 것을 고려 했습니까? 이것은'heightForRowAtIndexPath'만큼이나 많이 호출되지 않을 것이고, 첫 번째 섹션이라면이 방법으로 구현 될 수 있다고 생각할 것입니다. –

0

2 개의 테이블 뷰를 사용하지 않는 이유는 무엇입니까? 하나는 상단 섹션 용이고, 다른 하나는 두 번째 섹션 용입니까?

각 UITableView에 다른 대리인을 제공하거나 대리인을 공유하는 경우 맨 아래 UITableView에 대해 heightForRowAtIndexPath에서 즉시 반환 할 수 있습니다.

아마 당신이있어하는 부분 파악하는 위임 방법의 전환을 많이 방지하기 위해, 그들에게 각각 다른 대리자를 줄 것입니다.

+0

함께 스크롤 할 수 있습니까? 사실 잠시 생각해 봤지만 실제로 가능할 것이라고는 생각하지 않았습니다. –

+0

예, 함께 스크롤됩니다. UIScrollView 내부에 다른 뷰 세트가있는 것과 같습니다. –

+0

내가 tableview 헤더를 수정했지만 두 개의 tableviews도 훌륭한 솔루션입니다. 하나는 가능한 한 생각하지 않았습니다. 정말 고마워요. –

관련 문제