ios:滚动时UITableViewCell消失

时间:2012-01-10 09:25:12

标签: ios uitableview

我正在研究某种聊天iphone应用程序,我正面临一个我无法修复的问题。
我看到了几个答案,但似乎没有人在我的背景下解决这个问题。

我使用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;
}

我试图保持测试“cell == nil”但同样的事情 我想这是某种细胞再利用问题,但......无法确切地知道它究竟是什么。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我遇到和你一样的问题。在我的情况下,我使用自定义单元格,并在我的heightForRowAtIndexPath:(NSIndexPath *)indexPath方法中设置了它们的高度。当你开始滚动时,单元格将消失,但只有当行的高度然后我的自定义单元格的高度。否则它工作正常!

答案 1 :(得分:0)

可能是您的UITableView认为您的细胞不在视线范围内,并将其移除。如果tableview的框架不够大,并且您实际上正在查看溢出的内容,则会发生这种情况。

尝试将tableview上的.clipsToBounds属性设置为YES(代码中)或检查其上的“剪辑子视图”复选标记(在IB中)。这样,您将看到tableview的实际边界。