2012-01-10 3 views
2

채팅 아이폰 앱에서 일하고 있습니다. 수정하지 못하는 문제가 있습니다.
나는 이것에 대한 몇 가지 해답을 보았지만, 나는이 상황을 내가 가진 상황에서 고치는 것으로 보이지 않는다.ios : 스크롤 할 때 UITableViewCell이 사라집니다.

나는 TableView를 사용하여 메시지를 표시하고 때때로 스크롤하면 셀이 사라집니다. 부모보기 (내 채팅보기를 푸시하는 데 내비게이션 컨트롤러가 사용되는보기)로 돌아가서 채팅보기로 돌아가서 셀을 확인해야합니다.

- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath {  
    // static NSString* CellIdentifier = @"MessageCellIdentifier"; 
    // MessageTableViewCell* cell = (MessageTableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    //if (cell == nil){ 

    MessageTableViewCell* cell = [[[MessageTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil] autorelease]; 
    SharethingsAppDelegate *delegate = (SharethingsAppDelegate *)[[UIApplication sharedApplication] delegate]; 
    ChatMessage* message = [[delegate.dataModel getMessagesOfChatWithID:self.chatID] objectAtIndex:indexPath.row]; 
    [cell setMessage:message]; 

    //} 
    return cell; 
} 

내가 테스트 "세포 == 전무"하지만 같은 일을 계속하려고 :

나는 다음과 같은 방법이있다.
이것은 셀 재사용 문제의 일종이지만 ... 정확히 무엇인지 정확하게 파악할 수 없다고 생각합니다.

아이디어가 있으십니까?

+0

코드가 정상적으로 보입니다. 그래서 무슨 일이 일어나는지 잘 모르겠습니다. 메시지가 사라 졌을 때'message'가 여전히'nil'이 아닌 것으로 되돌아 오는 것을 확인 했습니까? 또한, 당신의'tableView : numberOfRowsInSection :'이'0'을 반환하기 시작할 수 있습니까? – mattjgalloway

+0

@mattjgalloway 사실 (사용자 정의보기 셀을 사용하는) 행을 볼 수 있지만 내용이 비어 있습니다. 좀 더 로그를 추가하고 게시하도록하겠습니다. 감사. – Luc

+0

글쎄, 내용이 비어 있다면'message'는'nil'이거나 사용자 정의 셀이'setMessage :'에 적절히 응답하지 않아서 그에 맞게 다시 그리기로 추정 할 수 있습니다. 비록 당신이 현재 새로운 세포를 만들 때마다 후자를 의심 할지라도. – mattjgalloway

답변

0

귀하의 UITableView에 세포가 보이지 않는다고 생각 될 수 있습니다. 이것은 tableview의 프레임이 충분히 크지 않고 실제로 오버 플로우 된 내용을보고있는 경우에 발생합니다.

테이블 뷰의 .clipsToBounds 속성을 YES (코드)으로 설정하거나 IB에서 "클립 하위 뷰"체크 표시를 확인해보십시오. 이렇게하면 tableview의 실제 경계가 표시됩니다.

+0

clipsToBounds는 속임수를 쓰지 않습니다 : ( – Luc

+0

트릭을해서는 안되지만 문제에 대해 밝혀 줄 수 있습니다. 세포가 사라지는 방법 /시기에 대해 좀 더 자세히 설명해 주실 수 있습니까? (reload, scroll, ...?) – mvds

+0

예,보기의로드 (모든 항목 표시)에 연결되어 있고 스크롤 할 때 – Luc

2

나는 당신과 같은 문제를 겪습니다. 내 경우에는 사용자 지정 셀을 사용하고 있으며 heightForRowAtIndexPath:(NSIndexPath *)indexPath 메서드에서는 높이를 설정합니다. 스크롤을 시작하면 셀이 사라지지만 행의 높이가 으로 작아지고이되면 내 사용자 정의 셀의 높이가됩니다. 그렇지 않으면 잘 작동합니다!

관련 문제