2011-07-17 6 views
0

내 UITableView에 대한 사용자 정의 셀이 있습니다. 오른쪽/왼쪽 관측자를 내 셀에 스 와이프하여 넣었습니다. 사용자가 셀을 스 와이프하면 함수를 호출합니다. 이 함수는 기본적으로 셀에 추가해야하는 UIView를 만듭니다.사용자 정의 셀 및 UITableViewController 제안

MVC 모범 사례를 사용하고 싶습니다. 그래서 내가 할 일은 적절한 일은 UIView를 사용자 정의 셀에 전달하고 내 사용자 정의 셀을 구현하여 셀에 추가하는 것입니다. 내 사용자 정의 셀에는 UIView의 속성도 있습니다.

문제는 세포의 높이도 조정해야한다는 것입니다. 지금은이 방법은 다음과 같습니다

+ (CGFloat)tableView:(UITableView *)tableView rowHeightForObject:(id)item { 

} 

이 대신 인덱스 경로 그것의 객체의 어떤 일반 heightForRowAtIndexPath 유사하다. 이 방법에서는 추가해야 할 UIView가 있는지 여부를 결정해야합니다. 있다면 높이를 조정해야합니다. 나는이 문제를두고 머리를 맞대고있는 것처럼 보일 수 없다. 이 방법에서는 self.optionsView를 수행하거나 사용자 정의 셀 하위 클래스의 속성에 액세스 할 수 없습니다. 옵션이 추가되었는지 아닌지 어떻게 확인합니까?

답변

0

사용자 정의 셀 클래스에 rowHight 속성을 추가하고 테이블 뷰 데이터 소스 데이터에 다른 높이 var를 추가 할 수 있습니다. 사용자 정의 셀을 변경할 때마다 height 속성을 설정하고 올바른 위치의 데이터 소스 데이터에 지정해야합니다.

그런 다음 heightForRowAtIndexPath 안에 높이 데이터를 요청하십시오.

희망이 있습니다.

0

Idan이 지적했듯이 콘텐츠 크기가 얼마인지 셀에 요청하는 것이 좋습니다. 당신은 사전 또는 user_info 같은 개체에 어떤 데이터를 추가 할 수 없습니다

//Assuming myCustomCell contains a placeholder for my additional view called innerView. 
//If the place holder is nil I don't need to adjust cells height. 
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 

    //Get the cellPath and myCustomCell at this path 
    NSIndexPath *rowPath = [NSIndexPath indexPathForRow:row inSection:0]; 
    MyCustomTableCell *myCustomCell = (MyCustomTableCell*)[self.table cellForRowAtIndexPath:rowPath]; 

    if(myCustomCell.innerView != nil) 
     return myCustomCell.innerView.frame.size.height + someDefaultCellHeight; 

    else 
     return defaultCellHeight; 
} 
+0

내가 rowHeightForObject를 사용할 때이 작동하지 않습니다, 더 indexPath이 – adit

+0

은 여기에 없다 : 난 그냥이 같은 표준 heightForRowAtIndexPath 방법을 사용합니다 좋아해? – Idan

관련 문제