滚动时我的勾选标记出现并正确消失,它在模拟器上完美运行。
然而,在设备上,4s,使复选标记再次消失的触摸不能正常工作。意思是,我需要触摸行,我希望复选标记消失两次。只有在第二次触摸后,复选标记才会消失。
此外,所有选定的列都保留蓝色背景,直到我再次触摸它们。
所以这是序列(在设备上):
我绝对需要的是,一旦我再次触摸该行,复选标记就会消失,实际上我在模拟器上的行为。
我想我可以通过didDeselectRow方法控制背景。但是,我在想象中如何控制复选标记问题。任何想法??
以下是didSelectRowAtIndexPath
的代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSInteger thisCardID;
NSInteger thisCardIndex;
NSString *cellValue;
UITableViewCell *thisCell = [tableView cellForRowAtIndexPath:indexPath];
cellValue = thisCell.textLabel.text;
if(searching) {
thisCardID = [[self.aCopyOfCardIDArray objectAtIndex:indexPath.row] integerValue];
thisCardIndex = [self.aCopyOfCardIDArray indexOfObject:[NSNumber numberWithInteger:thisCardID]];
if (thisCell.accessoryType == UITableViewCellAccessoryNone) {
[self.searchedSelectedRowArray replaceObjectAtIndex:thisCardIndex withObject:@"YES"];
thisCell.accessoryType = UITableViewCellAccessoryCheckmark;
[self.searchedSelectedCardIDs addObject:[NSNumber numberWithUnsignedInteger :thisCardID]];
}
else {
[self.searchedSelectedRowArray replaceObjectAtIndex:thisCardIndex withObject:@"NO"];
thisCell.accessoryType = UITableViewCellAccessoryNone;
[self.searchedSelectedCardIDs removeObject:[NSNumber numberWithUnsignedInteger:thisCardID]];
}
}
else {
thisCardIndex = [self.tempCardArray indexOfObject:cellValue];
if (thisCell.accessoryType == UITableViewCellAccessoryNone) {
[self.selectedRowArray replaceObjectAtIndex:thisCardIndex withObject:@"YES"];
thisCell.accessoryType = UITableViewCellAccessoryCheckmark;
[self.selectedCardIDs addObject:[NSNumber numberWithUnsignedInteger :thisCardID]];
}
else {
[self.selectedRowArray replaceObjectAtIndex:thisCardIndex withObject:@"NO"];
thisCell.accessoryType = UITableViewCellAccessoryNone;
[self.selectedCardIDs removeObject:[NSNumber numberWithUnsignedInteger:thisCardID]];
}
}
}
为了确保我自己清楚,我添加了一些屏幕截图:
答案 0 :(得分:2)
早到睡觉和Heureka,这是做魔法的didDeselectRowAtIndexPath。这就是为什么第二次触摸不被didSelect ...方法识别的原因。逻辑,如果你知道的话:-) 现在是时候算羊了......
这里是代码:
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *thisCell = [tableView cellForRowAtIndexPath:indexPath];
thisCell.selectionStyle = UITableViewCellSelectionStyleNone;
thisCell.accessoryType = UITableViewCellAccessoryNone;
}