我在带有一个部分的 Nib 上使用 UITableView 控件,并将委托/数据源设置为我的控制器,其中“表数据”数组仅初始化为 2 个项目。但是,在模拟器中运行时,我看到表视图中呈现了额外的空行。如何让 UITableView 只呈现两行?
谢谢!
我在带有一个部分的 Nib 上使用 UITableView 控件,并将委托/数据源设置为我的控制器,其中“表数据”数组仅初始化为 2 个项目。但是,在模拟器中运行时,我看到表视图中呈现了额外的空行。如何让 UITableView 只呈现两行?
谢谢!
我遇到了类似的问题,如何仅显示包含数据的单元格的分隔符。tableView 呈现尽可能多的行,以适应分配给它的区域(宽度和高度)。您指定的号码numberOfRowsInSection
仅用于确定它应该调用多少次cellForRowAtIndexPath
。
为了克服空单元格分隔线的渲染,我执行了以下操作:
禁用整个 tableView 的分隔符。您可以在 Interface builder 中的 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 中指定的频率被调用,这些子视图只会为拥有数据并应该有分隔符的单元格创建。
希望这可以帮助。
您需要确保您使用的数组算作该部分中的单元格数。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [myArray count];
}
放
urtableview.frame=(x,y,width,[rowheight * num of rows])
添加一个空的uiview作为tableview的底视图
tabelview.tableFooterView = UIView()
如果您不需要节或页脚,请给表格一个空页脚。
在 viewDidLoad 添加
tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
另一种方法是返回一个空的页脚视图。如果您需要上一节的页脚,这将特别有用。
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
return [[UIView alloc] initWithFrame:CGRectZero];
}
最后,这是另一个链接,其中包含实现此目的的其他方法。
您可以将表格视图框架的大小减小为 2*cellHeight。
或者任何必要的高度。所以说每个单元格的高度是 44 像素,而你只有一个部分,所以没有部分标题,你会这样做:
self.tableView = [[UITableView alloc]
initWithFrame:CGRectMake(x-coord, y-coord, width, 88)
style:UITableViewStylePlain];
这应该只显示 2 个单元格,假设每个单元格的高度为 44 像素。
您可以从 viewDidLoad 调用此方法:
- (void) addFooter
{
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)];
v.backgroundColor = [UIColor clearColor];
[self.tableView setTableFooterView:v];
}