2014-02-20 1 views
0

사용자가 연락처 목록의 특정 연락처에 이벤트를 추가 할 수있는 응용 프로그램을 개발하고 있습니다. 따라서 사용자가 연락처 목록을 스크롤하면 각 연락처에 이벤트 목록이 표시됩니다. 내 문제는 내가 바깥 쪽 테이블보기를 아래로 스크롤 할 때, 이벤트가 잘 보이지만, 위로 스크롤하면 이벤트 (예 : UITableViewCells)의 일부가 숨겨집니다. 다시 한 번 스크롤을 시작하여 벌금을 부과하고 다시 스크롤하면 이벤트가 숨어 있습니다. 예를 들어, 연락처에 세 개의 이벤트가있는 경우 처음 두 개만 표시되고 마지막 연락처는 숨겨집니다. 선택하면 데이터 소스 메소드가 모두 정상적으로 처리됩니다 (예 : CellForRowAtIndexPath 네 번 호출 됨). 내부있는 tableView의 내 CellForRowAtIndexPathUITableView 내부 UITableViewCell 숨기기 점점 외부 테이블 뷰

:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
static NSString *CellIdentifier = @"EventViewCell"; 

EventsCellAtViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 

    // load a new cell from the nib file 
    [[NSBundle mainBundle] loadNibNamed:@"EventsCellAtViewCell" owner:self options:nil]; 
    cell = self.eventsAtCell; 

    self.eventsAtCell = nil; 
} 

cell.selectionStyle = UITableViewCellSeparatorStyleNone; 

cell.event = [_eventsFeed eventAtIndex:indexPath.row]; 


return cell; 

}

이 문제에 저를 도와주세요. 미리 감사드립니다 !!

+0

UITableViewCell 내부에서 UITableView를 사용하는 이유 - 적어도 유선처럼 들립니다. 왜 다른 셀을 가진 1 UITableView에 데이터를 보관하지 않으시겠습니까? –

답변

1

다른 세로 스크롤보기 안에 세로 스크롤보기를 넣는 것이 종종 문제의 원인입니다. 사용자는 위 또는 아래로 드래그했을 때 어떤보기가 스크롤해야하는지에 대해 너무 혼란스러워합니다.

이 경우에는 셀 안의 데이터가 셀 자체의 높이보다 커서 모든 것을 표시하기 위해 스크롤해야하는 것처럼 들립니다.

셀 안의 데이터를 스크롤하는 대신 셀의 데이터를 모두 표시 할 수있을 정도로 키를 커야합니다. heightForRowAtIndexpath 메서드는 각 셀의 높이를 변경할 수있는 기회를 제공합니다.

오래된 Apple 샘플 코드를 기반으로 한 것 같습니다. 셀을 인스턴스화하는 UINib 메서드는 "loadNibNamed"를 사용하여 IBOutlet을 새 셀로 재설정하는 것보다 바람직합니다. 스토리 보드 사용은이 두 가지 방법보다 현대적입니다.

관련 문제