Я хочу вставить ячейку ниже текущей выбранной строки при повторном нажатии и удалить ячейку при повторном нажатии.
Я также хочу удалить вставленную ячейку из предыдущей выбранной строки, если пользователь касается новой строки.
Чтобы достичь этого, я думаю, что мне нужно отследить текущий выбранный путь индекса и ранее выбранный путь индекса, хотя я не знаю, как на самом деле этого добиться.
Вот что у меня есть:
- (BOOL)cellIsSelected:(NSIndexPath *)indexPath {
// Return whether the cell at the specified index path is selected or not
NSNumber *selectedIndex = [self.theSelectedIndexes objectForKey:indexPath];
return selectedIndex == nil ? FALSE : [selectedIndex boolValue];
}
In didSelectRowAtIndexPath
:
// I have a method that tracks if a cell is selected and if its deselected. This is what i'm using to insert a cell when selected and remove it when deselected.
if ([self cellIsSelected:indexPath]) {
[self.tableView beginUpdates];
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];
}else {
[self.tableView beginUpdates];
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];
}
в cellForRowAtIndexPath
:
// I use the same method to insert a new cell if the cell is selected or deselected
if [self cellIsSelected:indexPath]{
// allocate new cell below selected cell
else
// allocate standard view cell
На данный момент это вроде как работает; когда я выбираю ячейку, я вставляю новую ячейку на место, и когда я снова нажимаю на нее, она возвращается к обычной ячейке.
Однако у меня возникают проблемы, когда я начинаю выбирать другие строки после однократного выбора предыдущей ячейки.
Я не знаю, правильно ли я это делаю, я учусь на ходу.
Я подумал, что попрошу парней, которые помогут мне.
Не могли бы вы, ребята, помочь мне и привести пример того, как я мог бы сделать это, если это не проблема, поэтому я могу понять, как это сделать.
Спасибо!