0

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

菜单

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

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

-(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处理突出显示的委托方法中的图像。

NSLogging 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. 这就是告诉我每个视图有什么图像。我该如何提取这个?比较显然不起作用,因为它比较指针并且它们是不同的。

4

0 回答 0