我正在尝试自定义一个UITableViewCell来“漂亮”一个应用程序,我遇到了麻烦。我的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UIImage *rowBackground;
UIImage *selectionBackground;
NSInteger sectionRows = [tableView numberOfRowsInSection:[indexPath section]];
NSInteger row = [indexPath row];
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if ( cell == nil ) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
if (row == 0 && row == sectionRows - 1) {
rowBackground = [UIImage imageNamed:@"topAndBottomRow.png"];
selectionBackground = [UIImage imageNamed:@"topAndBottomRowSelected.png"];
NSLog(@"topAndBottom");
}
else if ( row == 0 ) {
rowBackground = [UIImage imageNamed:@"topRow.png"];
selectionBackground = [UIImage imageNamed:@"topRowSelected.png"];
NSLog(@"topRow");
}
else if ( row == sectionRows - 1 ) {
rowBackground = [UIImage imageNamed:@"bottomRow.png"];
selectionBackground = [UIImage imageNamed:@"bottomRowSelected.png"];
NSLog(@"bottomRow");
} else {
rowBackground = [UIImage imageNamed:@"middleRow.png"];
selectionBackground = [UIImage imageNamed:@"middleRowSelected.png"];
NSLog(@"middleRow");
}
((UIImageView *)cell.backgroundView).image = rowBackground;
((UIImageView *)cell.selectedBackgroundView).image = selectionBackground;
NSString *cellValue = [[listOfItems objectAtIndex:indexPath.row] description];
cell.textLabel.text = cellValue;
return cell;
}
它选择了适当的图像,如控制台日志中所示,但我有两个问题: 1.设置(cell.backgroundView).image无效 2.使用以下命令设置(cell.selectedBackgroundView).image错误: - [UITableViewCellSelectedBackground setImage:]:无法识别的选择器发送到实例0x4b90670
我可以在google中找到关于UIView问题的提示,但是没有找到任何关于UITableViewCell的信息。帮助
答案 0 :(得分:4)
存在一些不兼容性 - 没有可以设置的官方背景图像,IIRC,只有背景UIView。如果你想要一个UIImageView的东西,你必须做到这一点。
因此,您必须在创建单元格时手动将单元格的backgroundView设置为空白UIImageView *,例如:
cell.backgroundView = [[[UIImageView alloc] init] autorelease];
...然后您可以设置图像。