Я получил флажки, появляющиеся и исчезающие правильно при прокрутке, и он отлично работает на симуляторе.
Однако на устройстве 4с тач, чтобы галочка снова исчезла, не работает должным образом. То есть мне нужно коснуться строки, которую я хочу, чтобы флажок исчезал дважды. Только после второго касания галочка исчезает.
Кроме того, все выбранные столбцы остаются с синим фоном, пока я не коснусь их снова.
Итак, вот последовательность (на устройстве):
- выбран сенсорный ряд, синий фон, появляется галочка
- Прикосновение к той же строке исчезает с синим фоном, флажок остается
- коснитесь в той же строке, флажок исчезает, синий фон
Что мне определенно нужно, так это то, что флажок исчезает, как только я снова касаюсь строки, собственно поведение, которое я наблюдаю на симуляторе.
Фон, я думаю, я могу управлять с помощью метода 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]];
}
}
}
Чтобы убедиться, что я проясняю себя, я добавил несколько скриншотов: