2

我在带有一个部分的 Nib 上使用 UITableView 控件,并将委托/数据源设置为我的控制器,其中“表数据”数组仅初始化为 2 个项目。但是,在模拟器中运行时,我看到表视图中呈现了额外的空行。如何让 UITableView 只呈现两行?

谢谢!

4

7 回答 7

2

我遇到了类似的问题,如何仅显示包含数据的单元格的分隔符。tableView 呈现尽可能多的行,以适应分配给它的区域(宽度和高度)。您指定的号码numberOfRowsInSection仅用于确定它应该调用多少次cellForRowAtIndexPath

为了克服空单元格分隔线的渲染,我执行了以下操作:

  1. 禁用整个 tableView 的分隔符。您可以在 Interface builder 中的 tableview 的检查器中执行此操作,或者通过调用[yourTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];.

  2. 在您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 中指定的频率被调用,这些子视图只会为拥有数据并应该有分隔符的单元格创建。

希望这可以帮助。

于 2012-07-30T15:30:42.683 回答
0

您需要确保您使用的数组算作该部分中的单元格数。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [myArray count];
}
于 2012-06-04T23:04:01.770 回答
0

urtableview.frame=(x,y,width,[rowheight * num of rows])
于 2014-04-23T08:55:38.700 回答
0

添加一个空的uiview作为tableview的底视图

tabelview.tableFooterView = UIView()

于 2018-09-26T07:51:26.133 回答
0

如果您不需要节或页脚,请给表格一个空页脚。

在 viewDidLoad 添加

tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

请参阅如何删除 UITableView 中的空单元格?

另一种方法是返回一个空的页脚视图。如果您需要上一节的页脚,这将特别有用。

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    return [[UIView alloc] initWithFrame:CGRectZero];
}

最后,这是另一个链接,其中包含实现此目的的其他方法。

消除 UITableView 下面多余的分隔符

于 2015-11-17T12:37:28.140 回答
-1

您可以将表格视图框架的大小减小为 2*cellHeight。

或者任何必要的高度。所以说每个单元格的高度是 44 像素,而你只有一个部分,所以没有部分标题,你会这样做:

self.tableView = [[UITableView alloc] 
  initWithFrame:CGRectMake(x-coord, y-coord, width, 88) 
  style:UITableViewStylePlain];

这应该只显示 2 个单元格,假设每个单元格的高度为 44 像素。

于 2012-06-04T23:45:19.087 回答
-1

您可以从 viewDidLoad 调用此方法:

- (void) addFooter
{
 UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)];
 v.backgroundColor = [UIColor clearColor];
 [self.tableView setTableFooterView:v];
}
于 2012-06-04T23:50:32.397 回答