是否可以在uitableview中更改每个部分的背景图片?
我想在uitableview中为每个部分添加背景图片 有谁知道我该怎么做?
提前致谢!
喜欢这张图片 - >周三,周四和周五分别提供不同的背景图片
编辑我想为星期四图像2添加图像1作为星期四图像3星期五和..... 我该如何指定?
修改
这个用于创建节目标题的代码我想要背景
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
if(section == 0)
return @"Monday";
else if(section == 1){
return @"Tuesday";
}else if(section == 2){
return @"Wednesday";
} else if(section == 3){
return @"Thuesday";
} else if(section == 4){
return @"Friday";
} else if(section == 5){
return @"Saturday";
}else
return @"Sunday";
}
答案 0 :(得分:1)
您可以根据indexPath更改cellForRowAtIndexPath委托方法中的背景,如下所示:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"TaskCellRow";
UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
int maxRow = 3;
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed: [NSString stringWithFormat: @"background_image%i.png", MIN(indexPath.row, maxRow)]]];
}
else
{
UIImageView *background = (UIImageView *)cell.backgroundView;
background.image = [UIImage imageNamed: [NSString stringWithFormat: @"background_image%i.png", MIN(indexPath.row, maxRow)]];
}
return cell;
}
// To change header backgrounds
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
int maxRow = 3;
UIImageView *headerView = [[UIImageView alloc] initWithImage:[UIImage imageNamed: [NSString stringWithFormat: @"background_image%i.png", MIN(section, maxRow)]]];
return headerView;
}
然后,您只需创建图像,编号为所需的数量标题/行,即。 background_image0.png,background_image1.png,background_image2.png,...等等。 MIN将根据您决定的最大背景限制金额。希望有所帮助。
编辑:根据Henri的评论更改了cellForRowAtIndexPath。我忽略了,谢谢!这是为了兼容ARC。
答案 1 :(得分:1)
您可以使用:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
为节标题指定任何类型的UIView。这是另一种委托方法:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
允许您指定高度。
使用表的宽度和第二个方法的高度来分配/初始化第一个UIView,然后向其添加任意数量的视图,例如用于背景的UIImageView,然后是标题的标签。
答案 2 :(得分:0)
由ezekielDFM给出的迭代(并且主要是纠正)示例。请注意,此代码不兼容ARC(之前的示例可能是)。
// To change cell backgrounds
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"TaskCellRow";
UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
int maxRow = 3;
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
UIImageView *imageView = [[UIImageView alloc] initWithImage: [UIImage imageNamed: [NSString stringWithFormat: @"background_image%i.png", MIN(indexPath.row, maxRow)]]] autorelease];
cell.backgroundView = imageView;
} else {
// Reusing, we need to swap out the image of the background
cell.backgroundView.image = [UIImage imageNamed: [NSString stringWithFormat: @"background_image%i.png", MIN(indexPath.row, maxRow)]];
}
return cell;
}
// To change header backgrounds
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
int maxRow = 3;
UIImageView *headerView = [[[UIImageView alloc] initWithImage:[NSString stringWithFormat:@"background_image%i.png", MIN(section, maxRow)]] autorelease];
return headerView;
}
答案 3 :(得分:0)
因为我猜不可能更改表视图节的背景图像。如果您想要这样的要求,请尝试使用单元格行作为章节。即,对于每一行,作为表格的一部分&在那里添加1个不同标签的表格视图。它将满足您的需求。或者每行取