我想获取与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
处理突出显示的委托方法中的图像。
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
. 这就是告诉我每个视图有什么图像。我该如何提取这个?比较显然不起作用,因为它比较指针并且它们是不同的。