我想在点击一次时插入当前所选行下方的单元格,并在再次点按时删除该单元格。
如果用户点击新行,我还想从上一个选定行中删除插入的单元格。
为了实现这一目标,我认为我需要跟踪当前选择的索引路径和之前选择的索引路径,但我不知道如何实现这一目标。
这是我到目前为止所做的:
- (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
此时它有点起作用;当我选择一个单元格时,我会在其位置插入一个新单元格,当我再次点击它时,它将恢复为常规单元格。
当我在选择前一个单元格后开始选择其他行时,我遇到了问题。
我不知道我是否正确地这样做,我正在学习。
我以为我会请这里的人帮帮我。
你们可以帮助我,并提供一个例子,告诉我如何做到这一点,如果它没有麻烦,所以我可以理解如何做到这一点。
谢谢!
答案 0 :(得分:0)
跟踪上次选择的路径
NSIndexPath *lastIndex = [table indexPathForSelectedRow];
并将最后一个索引与当前索引进行比较
if(([indexPath compare:lastIndex] == NSOrderedSame)