自定义 UITableViewCell 未全长显示

Posted

技术标签:

【中文标题】自定义 UITableViewCell 未全长显示【英文标题】:Custom UITableViewCell not showing on full length 【发布时间】:2017-10-11 20:43:19 【问题描述】:

我是 ios 新手。我正在练习objective-c并制作了我的自定义UITableViewCell。它有一些高度而不是它的默认高度,即高度是 120。但是当我运行程序时,单元格显示在它们的默认高度上。我只写了一些代码如下,我正在使用 xib 来设计自定义单元格。如果需要,我可以分享屏幕截图。谢谢

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

    static NSString *CellIdentifier = @"CustomCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) 
        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
        cell = [topLevelObjects objectAtIndex:0];
    

    return cell;

编辑 在我的一个项目中,我没有实现 heightforrowatindexpath 方法。为什么我必须在另一个项目中实施。有必要吗??请指导。

【问题讨论】:

【参考方案1】:

如果您的所有自定义单元格的高度相同但与默认高度不同,您可以通过三个选项来定义高度。

1) 在 storyboard/Interface builder 中将其定义为 TableView 的属性。选择 TableView -> 大小检查器 -> 行高。

2) 在你的 viewDidLoad() 中,你可以定义高度_tableView.rowHeight = 120; 这个选项会覆盖storyboard/Interface builder中的值。

3) 您也可以按照其他人的建议实现委托。

(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
return 120;

最后一个选项让您可以灵活地为每行定义不同的高度,并覆盖以上两个选项的值。

有一些方法可以根据内容获取动态单元格高度。如果您需要帮助,请告诉我。

【讨论】:

【参考方案2】:

如果您想要不同的单元格高度,您需要在委托中提供它们:https://developer.apple.com/documentation/uikit/uitableviewdelegate/1614998-tableview?language=objc

【讨论】:

【参考方案3】:

行高必须在委托方法中返回:

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

return 120.0;

【讨论】:

以上是关于自定义 UITableViewCell 未全长显示的主要内容,如果未能解决你的问题,请参考以下文章

iOS 帮助:UITableViewCell 类的自定义设计未显示在 UITableView 中

自定义 UITableViewCell 未出现在表格中

为自定义 UITableViewCell 加载和注册 nib 时未调用 prepareForSegue

从 .xib 创建的自定义 UITableViewCell 不显示

UIStoryboard 中的自定义原型单元已创建,但未显示在 UITableView

UIImage 未显示在 UITableViewCell 中