我需要在选中单元格时隐藏单元格的正常(未选中 - cell.backgroundView)图像,并在未选中单元格时显示它。
tableview的工作方式是普通视图(cell.backgroundView)始终存在,当选择单元格时,它会将所选图像(cell.selectedBackgroundView)设置为视图并置于普通视图之上。
问题是当所选细胞是半透明的并且正常细胞总是在其下面可见时。 我在我的(自定义)UITableViewCell的2个视图中创建了我在视图控制器中加载的视图:
-(void)tableView:(UITableView *)tableView
willDisplayCell:(UITableViewCell *)cell
forRowAtIndexPath:(NSIndexPath *)indexPath
{
cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"XYCell"]];
cell.selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"XYCellSelected"]];
}
我清除了所需位置的颜色,但我无法按照我的意愿使用它。 由于我选择的图像(cell.selectedBackgroundView)是半透明的,因此仍然可以在其下方看到cell.backgroundView。 我怎么能让它消失?
答案 0 :(得分:1)
一般来说,如果你想要一个自定义单元格,你应该实现自己的uitableviewcell。
在你的情况下,看看
- (void)setSelected:(BOOL)selected animated:(BOOL)animated;
帮助您的代码示例:
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
//your own backgroundview when selected
self.selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"selectedBck.png"]];
if (selected){
// edit the cell's view when it's selected
self.backgroundView = nil;
}
else {
// edit the cell's view when it isn't selected
}
}
答案 1 :(得分:1)
- (void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath *)indexPath
{
self.highlightIndexPath = indexPath; // for iOS6
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.backgroundView.hidden = YES;
}
- (void)tableView:(UITableView *)tableView didUnhighlightRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if (indexPath.row == NSNotFound) {
// for iOS6
cell = [tableView cellForRowAtIndexPath:self.highlightIndexPath];
}
cell.backgroundView.hidden = NO;
}