iOS 8表格单元格内容不显示

Posted

技术标签:

【中文标题】iOS 8表格单元格内容不显示【英文标题】:Content in Table cell of iOS 8 is not display 【发布时间】:2016-06-21 09:58:48 【问题描述】:

ios 9 中一切正常。 但在 iOS 8 中,不显示内容,只显示 imageview。

我所做的是创建一个视图并将标签和 UIImage 添加到该视图。然后将该视图添加到表格 Cell 的 contentView 中

创建视图

- (UIView *)getHeaderView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, HEADER_SECTION_HEIGHT)];
    [view setBackgroundColor:[[RNThemeManager sharedManager] colorWithHexString:[_themeComponent valueForKey:@"Layer1Color"]]];

    UILabel *taskName = [[UILabel alloc] initWithFrame:CGRectMake(5.0, SECTION_BREAK+3.0, view.frame.size.width-23.0, 20)];
    [taskName setFont:[UIFont boldSystemFontOfSize:[[_themeComponent valueForKey:@"RegularFontSize"] intValue]]];
    [taskName setText:combinedTask.taskDescription];
    [taskName setTextColor: [[RNThemeManager sharedManager] colorWithHexString:[_themeComponent valueForKey:@"textPrimary"]]];
    [view addSubview:taskName];

UIImageView *addressView = [[UIImageView alloc]initWithFrame:CGRectMake(5.0, SECTION_BREAK+28.0, 20, 20)];
    addressView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@.png", @"Attr_Pin"]];
    [view addSubview:addressView];

    UILabel *address = [[UILabel alloc] initWithFrame:CGRectMake(35.0, SECTION_BREAK+23.0, view.frame.size.width-35.0, 30)];
    [address setFont:[UIFont boldSystemFontOfSize:[[_themeComponent valueForKey:@"SmallFontSize"] intValue]]];
    address.lineBreakMode = NSLineBreakByWordWrapping;
    address.numberOfLines = 0;

    [address setText:[NSString stringWithFormat:@"%@", unit]];
    [address setTextColor: [[RNThemeManager sharedManager] colorWithHexString:[_themeComponent valueForKey:@"textPrimary"]]];
    [view addSubview:address];
    return view;

向表格单元格添加视图

UIView *header= [self getHeaderView:tableView viewForHeaderInSection:section];
cell.taskIdLabel.hidden = YES;

[cell.contentView addSubview:header];

有人有什么想法吗?非常感谢您的帮助。

【问题讨论】:

【参考方案1】:

这是因为 iOS 9 Apple 处理的自动布局比以前好。 在返回单元格之前添加 [cell layoutIfNeeded]。 更新 我以前也有同样的问题。这是我用来解决问题的代码块。

- (void) sizeHeaderToFit 

    //call in viewLayoutSubView
    UIView *myHeaderView = self.tableView.tableHeaderView;

    [myHeaderView setNeedsLayout];
    [myHeaderView layoutIfNeeded];
    CGFloat height = [myHeaderView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;

    myHeaderView.frame = (
        CGRect headerFrame = myHeaderView.frame;
        headerFrame.size.height = height;
        headerFrame;
    );

    self.tableView.tableHeaderView = myHeaderView;

在 viewDidLayoutSubView 调用它。希望它有助于bạn :))

【讨论】:

我试过 [cell.contentView setNeedsDisplay]; [cell.contentView layoutIfNeeded];还有[cell setNeedsDisplay]; [单元格布局如果需要];昨天,但没有运气。 这里奇怪的是uiimage显示了,而其他的没有

以上是关于iOS 8表格单元格内容不显示的主要内容,如果未能解决你的问题,请参考以下文章

将单元格插入表格时,自定义表格视图单元格内的图像视图消失

EXCEL中,如何引用一个单元格中的数据,作为另一个单元格内容中的一部分?

在 ios 中展开和折叠表格视图单元格

重叠表格单元格内容[关闭]

iOS8“现在”改变动态单元格的高度,重新内部单元格内容

是否可以让表格单元格内的内容可编辑 div 保持其原始单元格尺寸?