У меня есть несколько странная проблема, и я не могу понять, что мне не хватает. У меня есть UITableView, который редактируется на месте (т.е. Когда мой пользовательский интерфейс загружен, я отправляю свою таблицу: setEditing: YES animated: YES message). Последняя строка в таблице предназначена для строки "Добавить новую". Все строки, кроме последней строки в моей таблице, можно перемещать. Ни одна из строк не может быть удалена.
Строки отображаются правильно, а грабберы отображаются с правой стороны всех строк, кроме последней строки (по назначению). Проблема в том, что я не могу перемещать строки. Когда я нажимаю на граббер, чтобы переместить строку, это вроде как смещение на месте, но я не могу перетащить его вверх или вниз. Вот соответствующий фрагмент кода:
- (UITableViewCellEditingStyle)tableView:(UITableView *)aTableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
return UITableViewCellEditingStyleNone;
}
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == [self.itemArray count] ) {
return NO;
}
return YES;
}
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == [self.itemArray count]) {
return NO;
}
return YES;
}
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
Item *item = [self.itemArray objectAtIndex:fromIndexPath.row];
[self.itemArray removeObjectAtIndex:fromIndexPath.row];
[self.itemArray insertObject:item atIndex:toIndexPath.row];
}
- (NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath {
if ([proposedDestinationIndexPath row] < [self.itemArray count]) {
return proposedDestinationIndexPath;
}
NSIndexPath *betterIndexPath = [NSIndexPath indexPathForRow:[self.itemArray count]-1 inSection:0];
return betterIndexPath;
}
При попытке отладки кажется, что tableView: moveRowAtIndexPath: вызывается почти сразу, даже когда я держусь за граббер (т.е. я еще не поднял палец). Кроме того, мой tableView: targetIndexPathForMoveFromRowAtIndexPath: предложилDestinationIndexPath: вообще не запускается.
Любые мысли о том, что я делаю неправильно? Любые предложения о том, что я должен попытаться решить эту проблему?