我正在尝试创建一个UITableView
,它只显示包含数据内容的行数。这是一个菜单系统,假设在特定菜单中有5个选项,我只想在屏幕上显示5行,背景图像代替空行的位置(类似的例子,我想是世界时钟)。我该怎么办呢?我已经四处搜寻但找不到任何有用的东西。非常感谢。
---------------------
Menu Item 1
---------------------
Menu Item 2
---------------------
Rest of view as image
---------------------
使用分组表视图有效,但我真的不想使用它。
答案 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: