Отслеживать текущий выбранный путь индекса и ранее выбранный путь индекса - PullRequest
3 голосов
/ 15 июня 2011

Я хочу вставить ячейку ниже текущей выбранной строки при повторном нажатии и удалить ячейку при повторном нажатии.

Я также хочу удалить вставленную ячейку из предыдущей выбранной строки, если пользователь касается новой строки.

Чтобы достичь этого, я думаю, что мне нужно отследить текущий выбранный путь индекса и ранее выбранный путь индекса, хотя я не знаю, как на самом деле этого добиться.

Вот что у меня есть:

- (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

На данный момент это вроде как работает; когда я выбираю ячейку, я вставляю новую ячейку на место, и когда я снова нажимаю на нее, она возвращается к обычной ячейке.

Однако у меня возникают проблемы, когда я начинаю выбирать другие строки после однократного выбора предыдущей ячейки.

Я не знаю, правильно ли я это делаю, я учусь на ходу.

Я подумал, что попрошу парней, которые помогут мне.

Не могли бы вы, ребята, помочь мне и привести пример того, как я мог бы сделать это, если это не проблема, поэтому я могу понять, как это сделать.

Спасибо!

1 Ответ

0 голосов
/ 25 сентября 2012

для отслеживания последнего выбранного пути

NSIndexPath *lastIndex = [table indexPathForSelectedRow]; 

и сравнить последний индекс с текущим индексом

if(([indexPath compare:lastIndex] == NSOrderedSame)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...