如何在UITableViewCell中的selectedBackgroundView中获取图像?

时间:2013-04-28 22:09:40

标签: ios objective-c xcode uitableview

我想获得selectedBackgroundView与之关联的图像(我之前设置的图像)。我有这样的菜单:

Menu

此菜单有三种状态:正常(未选中,黑色图像),选中(蓝色图像)和高亮显示(灰色图像)。这很好,但有一个问题。如果我突出显示所选行,然后在不选择的情况下取消选择它(例如,通过拖动我的手指并抬起单元格外部),它将变为黑色而不是蓝色。这是非选定单元格的预期行为(因为它们在突出显示和未选定之间转换),但不适用于所选行(应在选定行和突出显示之间转换)。

这是我的行突出显示/取消突出显示的代码:

-(void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath *)indexPath {
    self.cellBackgroundView = [[UIImageView alloc] initWithImage:self.cellBackgroundNormal];
    self.cellBackgroundViewHighlighted = [[UIImageView alloc] initWithImage:self.cellBackgroundHighlighted];

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    NSLog(@"%@", cell.selectedBackgroundView);
    NSLog(@"%@", self.cellBackgroundViewSelected);
    if(cell.selectedBackgroundView == self.cellBackgroundViewSelected) {
        self.isSelected = YES;
    }
    self.highlightedIndexPath = indexPath;

    cell.backgroundView = self.cellBackgroundViewHighlighted;
    cell.selectedBackgroundView = self.cellBackgroundView;

}

-(void)tableView:(UITableView *)tableView didUnhighlightRowAtIndexPath:(NSIndexPath *)indexPath {
    self.cellBackgroundView = [[UIImageView alloc] initWithImage:self.cellBackgroundNormal];

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    if(!cell) {
        cell = [tableView cellForRowAtIndexPath:self.highlightedIndexPath];
    }

    if(self.isSelected) {
        cell.selectedBackgroundView = self.cellBackgroundViewSelected;
        self.isSelected = NO;
    } else {
        cell.backgroundView = self.cellBackgroundView;
    }

}

基本上,我有一个BOOL来检查并查看它是否被选中,并且根据它应该采取不同的行动。但是,我需要获取处理突出显示的委托方法中当前位于selectedBackgroundView的图像。

NSLog ging it(突出显示方法)给了我:

2013-04-28 23:07:18.076 App1[6403:c07] <UIImageView: 0x75d4c20; frame = (0 0; 320 44); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x75d5610>> - cell_menu_selected
2013-04-28 23:07:18.078 App1[6403:c07] <UIImageView: 0x7567350; frame = (0 0; 320 44); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x75ab2d0>> - cell_menu_selected

如您所见,最后一部分是我需要的cell_menu_selected。这就是告诉我每个视图有什么图像的原因。我该如何提取这个?比较显然不起作用,因为它比较指针和那些是不同的。

0 个答案:

没有答案