两行只有UITableView

时间:2012-06-04 23:01:26

标签: ios uitableview

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

谢谢!

7 个答案:

答案 0 :(得分:2)

我遇到了类似的问题,如何只显示包含数据的单元格的分隔符。 tableView呈现尽可能多的行,因为它可以放入分配给它的区域(宽度和高度)。您在numberOfRowsInSection中指定的数字仅用于确定应拨打cellForRowAtIndexPath的次数。

为了克服空单元格的分隔线的渲染,我做了以下内容:

  1. 禁用整个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像素,与默认分隔符相同,它在底部运行单元格的长度。

  3. 由于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];
}

最后,这是另一个与其他方法相关的链接。

Eliminate extra separators below UITableView

答案 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];
}