我在Nib上使用UITableView控件,只有一个部分,并将委托/数据源设置为我的控制器,其中“table data”数组仅初始化为2个项目。 但是,在模拟器中运行时,我看到在表视图中呈现了额外的空行。如何使UITableView只渲染两行?
谢谢!
答案 0 :(得分:2)
我遇到了类似的问题,如何只显示包含数据的单元格的分隔符。 tableView呈现尽可能多的行,因为它可以放入分配给它的区域(宽度和高度)。您在numberOfRowsInSection
中指定的数字仅用于确定应拨打cellForRowAtIndexPath
的次数。
为了克服空单元格的分隔线的渲染,我做了以下内容:
禁用整个tableView的分隔符。您可以在“界面”构建器中的表视图的检查器中或通过调用[yourTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
来执行此操作。
在您使用单元格填充表格视图的cellForRowAtIndexPath
内创建一个新的UIView
并将其设置为单元格的子视图。这个视图的背景是浅灰色和略透明的。您可以使用以下内容执行此操作:
UIView *separatorView = [[UIView alloc] initWithFrame:CGRectMake:
(0, cell.frame.size.height-1,
cell.frame.size.width, 1)];
[separatorView setBackgroundColor:[UIColor lightGrayColor]];
[separatorView setAlpha:0.8f];
[cell addSubView:separatorView];
此视图的宽度为1像素,与默认分隔符相同,它在底部运行单元格的长度。
由于cellForRowAtIndexPath只是按照您在numberOfRowsInSection中指定的频率调用,因此这些子视图只会为拥有数据并且应该有分隔符的单元格创建。
希望这有帮助。
答案 1 :(得分:0)
您需要确保使用数组计数作为该部分中的单元格数。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [myArray count];
}
答案 2 :(得分:0)
设置
urtableview.frame=(x,y,width,[rowheight * num of rows])
答案 3 :(得分:0)
如果您不需要部分或页脚,请为表格提供一个空页脚。
在viewDidLoad中添加
tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
请参阅How to remove empty cells in UITableView?
另一种实现此目的的方法是返回空页脚视图。如果您需要上一部分的页脚,这将非常有用。
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
return [[UIView alloc] initWithFrame:CGRectZero];
}
最后,这是另一个与其他方法相关的链接。
答案 4 :(得分:0)
添加一个空的uiview作为tableview的底视图
tabelview.tableFooterView = UIView()
答案 5 :(得分:-1)
您可以将表格视图框架的大小减小为2 * cellHeight。
或者无论高度如何。因此,假设每个单元格的高度为44像素,并且您只有一个部分,因此没有部分标题,您可以这样做:
self.tableView = [[UITableView alloc]
initWithFrame:CGRectMake(x-coord, y-coord, width, 88)
style:UITableViewStylePlain];
这应该只显示2个单元格,假设每个单元格高度为44像素。
答案 6 :(得分:-1)
您可以从viewDidLoad中调用此方法:
- (void) addFooter
{
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)];
v.backgroundColor = [UIColor clearColor];
[self.tableView setTableFooterView:v];
}