【问题标题】:ios: UITableViewCell disappear when scrollingios: UITableViewCell 滚动时消失
【发布时间】:2014-12-23 00:21:52
【问题描述】:

我正在开发某种聊天 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”但同样的事情。
我想这是某种细胞重复使用问题,但是......无法真正弄清楚它到底是什么。

有什么想法吗?

【问题讨论】:

  • 代码看起来不错,所以我不太确定发生了什么。当消息消失时,您是否检查过message 仍然以非nil 的形式返回?另外,您的tableView:numberOfRowsInSection: 是否有可能开始返回0
  • @mattjgalloway 实际上我可以看到行(我使用自定义视图单元格),但内容是空的。我会添加更多日志并随时通知您。谢谢。
  • 哦,如果内容为空,那么可能messagenil 或者您的自定义单元格没有正确响应setMessage: 并相应地重绘自身。尽管怀疑后者,因为您目前每次都在创建新单元格。

标签: ios uitableview


【解决方案1】:

我遇到了和你一样的问题。就我而言,我使用的是自定义单元格,并在我的 heightForRowAtIndexPath:(NSIndexPath *)indexPath 方法中设置了它们的高度。当您开始滚动时,单元格会消失,但前提是行的高度变得 更小 然后我的自定义单元格的高度。否则它工作正常!

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 它不应该做任何伎俩,但它可能会为您的问题提供一些启示。您能否更具体地说明细胞如何/何时消失?它与任何动作相关吗? (重新加载,滚动,...?)
    • 是的,它与视图的加载(所有项目的显示)以及滚动时相关。
    • 请具体一点。
    • 其实这个pb好像是在list的cell比较多的时候出现的。当所有单元格都适合屏幕时,就没有问题了。我有一个包含 30 多个单元格的列表,在这种情况下,滚动似乎导致了 pb。奇怪的是不是每次都发生。如果我关闭应用程序(将其从后台删除)并重新启动它就可以了。
    猜你喜欢
    • 2020-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多