跟踪当前选择的索引路径和先前选择的索引路径

问题描述

我想在轻按一次时在当前选定的行下方插入一个单元格,并在再次轻按时删除该单元格。 如果用户点击新行,我也想从上一个选定行中删除插入的单元格。 为了实现这一点,我想我需要跟踪当前选择的索引路径和先前选择的索引路径,尽管我不知道如何实际实现。 这是我到目前为止所拥有的:
- (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];

}
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
在这一点上,它已经可以工作了。当我选择一个单元格时,我会在其位置插入一个新的单元格,当我再次点击它时,它会恢复为常规单元格。 但是,当我仅选择一次上一个单元格后开始选择其他行时,就会遇到问题。 我不知道我是否正确地做到了,我正在学习。 我以为我会请这里的家伙帮我。 你们可以帮助我,并提供一个示例说明如何在没有问题的情况下执行此操作,以便我可以理解如何执行此操作。 谢谢!     

解决方法

        跟踪最后选择的路径
NSIndexPath *lastIndex = [table indexPathForSelectedRow]; 
并比较上一个索引与当前索引
if(([indexPath compare:lastIndex] == NSOrderedSame)