UITableview 单元格高度在空表中不起作用?
Posted
技术标签:
【中文标题】UITableview 单元格高度在空表中不起作用?【英文标题】:UITableview cells height is not working in a empty table? 【发布时间】:2011-08-27 13:05:48 【问题描述】:我正在使用下面的代码在一个普通的(未分组的)UITableView 上创建一个更大、更干净的外观。它工作正常,除非我有一个空表,然后单元格的高度设置为正常高度。我有标准的 Separatorstyle(灰线),所以如果它是空的,它看起来很糟糕。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
return 75;
知道如何解决这个问题吗?
编辑:
找到了一个更好的解决方案,如果表格为“空”,我什至不显示行,而是显示指南文本。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
if ([dataArray count] == 0)
[theTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
[pleaseAddStuffText setHidden:NO];
else
[theTableView setSeparatorStyle:UITableViewCellSeparatorStyleSingleLine];
[pleaseAddStuffText setHidden:YES];
return [dataArray count];
【问题讨论】:
“空表”是指您的numberOfSectionsInTableView:
和/或tableView:numberOfRowsInSection:
返回0?
那么你的tableView:heightForRowAtIndexPath:
永远不应该被调用,你可以设置一个断点来检查它。
好问题,很好的解决方法。
【参考方案1】:
您应该能够通过设置 rowHeight 来始终强制设置行高,即使行数为 0。
self.tableView.rowHeight = 75.0;
您也可以在IB中设置。
heightForRowAtIndexPath 似乎只有在 cellForRowAtIndexPath 中设置单元格时才被调用,而这是 tableview 的属性并且始终存在。
【讨论】:
【参考方案2】:我在单元格内使用自动布局,所以我需要自动行高。但是当表格为空时,我也希望单元格大小大于标准的 44 点高度。我最终做的是在故事板文件中设置行高和估计为 124 并实现 tableView:heightForRowAtIndexPath:
方法以返回 UITableViewAutomaticDimension
:
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
return UITableViewAutomaticDimension;
【讨论】:
【参考方案3】:空表是什么意思?如果整个表为空,则返回的表的节数为空。这意味着桌子上根本不会显示任何内容。
如果你有一个空的表格行 = 表格单元格,那么你应该确保 cell at indexpath
返回一些你只需要放置空值的地方。然后,您的表格中的其他行之间将有一个空行。
究竟什么是/应该是空的?
【讨论】:
空表 = 没有要显示的数据/单元格。输入 Separatorstyle 之间的高度。以上是关于UITableview 单元格高度在空表中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
滑动删除 UITableView 单元格动画在 swift 2 中不起作用