UITableView(Controller) - 隐藏空行

时间:2010-09-08 21:30:03

标签: iphone objective-c uitableview

我正在尝试创建一个UITableView,它只显示包含数据内容的行数。这是一个菜单系统,假设在特定菜单中有5个选项,我只想在屏幕上显示5行,背景图像代替空行的位置(类似的例子,我想是世界时钟)。我该怎么办呢?我已经四处搜寻但找不到任何有用的东西。非常感谢。

---------------------
Menu Item 1
---------------------
Menu Item 2
---------------------
Rest of view as image




---------------------

使用分组表视图有效,但我真的不想使用它。

1 个答案:

答案 0 :(得分:4)

您的UITableView可以有一个backgroundView。将它设置为UIImageView,并将其框架设置为表视图的边界。这段代码未经测试,但应该给你一个想法。

UIImage * img = [UIImage imageNamed:@"myImage.jpg"];
UIImageView * imgView = [[UIImageView alloc] initWithImage:img];
imgView.frame = myTableView.bounds;
myTableView.backgroundView = imgView;

编辑:上面会产生像世界时钟这样的背景。要使其在其他单元格下方显示为单元格,请更改数据源:

- numberOfRowsInSection:section:应该比之前多返一个。 - tableView:canEditRowAtIndexPath:tableView:canMoveRowAtIndexPath:应该为此新单元格返回NO- (UITableViewCell *)tableView:cellForRowAtIndexPath:需要在要求时创建新单元格,因此如果您有5个数据单元格,则第6个将返回:

UITableViewCell * cell = //create your cell
//change the height to match the remaining space
UIImage * img = [UIImage imageNamed:@"myImage.jpg"];
UIImageView * imgView = [[UIImageView alloc] initWithImage:img];
cell.backgroundView = imgView;

我不确定您是否必须设置图片视图大小,但您必须设置单元格大小以占用剩余空间,在表格视图委托 {中使用此类似的内容{1}}为最后一行:

tableView:heightForRowAtIndexPath: