从另一个视图控制器添加单元格时 UITableViewCell 的内容不可见

Posted

技术标签:

【中文标题】从另一个视图控制器添加单元格时 UITableViewCell 的内容不可见【英文标题】:Content of UITableViewCell Invisible when cell is added from another view controller 【发布时间】:2016-04-24 19:00:19 【问题描述】:

我遇到了一个奇怪的问题,我将 UITableViewCell 添加到另一个 TableViewController 的 tableView 中,该 tableView 当前不可见但之前已加载。 问题是单元格被添加到 tableView 但是一旦我进入该视图控制器,单元格的内容是空白的:

这是添加单元格的方式:

单元格 contentView 显示为不可见的 tableView 的 CellForRowAtIndexPath:

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

          LYRConversation *conversation = [_dataSource objectAtIndex:indexPath.row];

          ConversationListCell *cell = (ConversationListCell *)[tableView dequeueReusableCellWithIdentifier:CELL_REUSE_ID forIndexPath:indexPath];

          [self configureCell:cell atIndexPath:indexPath conversation:conversation];

          return cell;

 

-(void)configureCell:(ConversationListCell *)conversationCell atIndexPath:(NSIndexPath *)indexPath conversation:(LYRConversation *)conversation

    [conversationCell updateAvatarWithUrl:[NSURL URLWithString:[self avatarStringUrlForConversation:conversation]]];
    [conversationCell updateTitle:[self titleForConversation:conversation]];
    [conversationCell updateUnreadMessageIndicator:conversation];
    NSArray *otherParticipants = [[PersistentCache sharedCache] cachedUsersForUserIDs:conversation.participants];
    conversationCell.preview.text = [((PFUser *)otherParticipants.lastObject) objectForKey:@"jobTitle"];
    [UIView updateStatusIndicatorOfConversation:otherParticipants statusIndicator:conversationCell.status];



-(void)updateAvatarWithUrl:(NSURL *)avatarUrl

    if (avatarUrl != nil) 
        downloadImageThenSetForImageView(self.avatar, avatarUrl);
    


-(void)updateTitle:(NSString *)title

    self.title.text = title;


-(void)updateUnreadMessageIndicator:(LYRConversation *)conversation

    if (conversation.lastMessage.isUnread) 
        [_unreadMessageIndicator setImage:[ConversationListCell unreadBlue]];
    
    else 
        [_unreadMessageIndicator setImage:[ConversationListCell unreadGray]];
    


+(void)updateStatusIndicatorOfConversation:(NSArray<PFUser *> *)users statusIndicator:(UIView *)view

    int  statusValue = ((NSNumber *)[users.firstObject objectForKey:@"status"]).intValue;
    if (statusValue == 1) 
        view.backgroundColor = [UIColor PNGInOffice];
    
    else if(statusValue == 2)
        view.backgroundColor = [UIColor PNGBusy];
    
    else if(statusValue == 3)
        view.backgroundColor = [UIColor PNGAway];
    

此视图控制器使用情节提要中的自动布局进行布局。谢谢!

【问题讨论】:

【参考方案1】:

尝试刷新表格视图后,将数据添加到数据源中。

【讨论】:

我试过了,但偶尔还是会显示空白【参考方案2】:

您必须添加此行才能使用尝试添加 [tableView reloadData];

【讨论】:

它不起作用:(最上面的单元格仍然是空白的。 你能分享一段代码吗.. :) 我们一定会帮助你的。 源文件很长,有什么具体的代码要我分享或者只是两个视图控制器实现文件? 是的,请分享 cellforRowatindexpath 以及您将单元格添加到其他 tableview 单元格的位置 我刚刚添加了 cellForRowAtIndexPath,将单元格添加到另一个表格视图的代码发布在原始帖子中的“这是添加单元格的方式:”下。可能是 AutoResizingMask 问题,因为我正在使用自动布局并且没有禁用单元格的 autoResizingMaskIntoConstraints 属性?

以上是关于从另一个视图控制器添加单元格时 UITableViewCell 的内容不可见的主要内容,如果未能解决你的问题,请参考以下文章

在 SWIFT 的表视图中填充自定义单元格时出错

快速从另一个视图控制器更改 webview 的 url

从另一个视图控制器单击 uitableviewcell 后,swift 3 更改 uitableviewcell?

关闭并显示按钮上的视图单击从另一个视图

仅当在表格视图中选择单元格时,详细信息披露才会做出反应

当我选择表格视图单元格时无法推送我的视图控制器