2010-08-22 3 views
2

나는 UITableViewCells의 목록을 포함하는 UITableView가있다. 그리고 메소드 (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath에서 UITableViewCells의 높이를 설정합니다.나는 어떻게 dynamicly UITableViewCell 높이를 높일 수

그러나 높이를 높이려면 UITableViewCell을 선택해야합니다. 예를 들어, 셀을 선택하면 UITableViewCell 높이가 100 픽셀 증가해야합니다. 누구든지 그 방법을 알고 있습니까?

답변

11
  1. 컨트롤러에서 선택한 색인을 저장하십시오. 해당 인덱스에 따라
  2. 반환 세포의 높이 : didSelectRowAtIndexPath 방법

    CGFloat height = 30.0f; 
    ... 
    -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 
        return indexPath.row == selectedIndex ? height+100 : height; 
    } 
    
  3. 새로 고침있는 tableview 형상 (beginUpdatesendUpdates 사이의 빈 블록 트릭 않습니다) :

    - (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
        index = indexPath.row; 
        [tableView beginUpdates]; 
        [tableView endUpdates];  
    } 
    
+0

해당 셀을 다시로드하지 않아야합니까? – Eiko

+0

내용이 변경된 경우에만 셀을 다시로드해야합니다. 실제로 연습해야합니다 ... – Vladimir

+0

실제로 그 경우 2 셀을 다시로드해야합니다. 새로 선택한 셀과 이전 셀 – Vladimir

0

확인을하여 위임 방법

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

(새) 올바른 높이를 반환하고 테이블보기를 지정된 경로로 다시로드합니다.

관련 문제