要撤销上一步甚至是上上一步的操作,首先得保存以上那些步骤,比如删除相片与撤销删除的操作,删除时就得保存删除的相片索引等信息,保存操作,在撤销时按照索引取出操作即可恢复上一步的状态,代码如下:
- (void)deleteAlbum{
NSMethodSignature *sig = [self methodSignatureForSelector:@selector(addAlbum:atIndex:)];
NSInvocation *undoAction = [NSInvocation invocationWithMethodSignature:sig];
[undoAction setTarget:self];
[undoAction setSelector:@selector(addAlbum:atIndex:)];
[undoAction setArgument:&deletedAlbum atIndex:2];//设置参数删除相片地址
[undoAction setArgument:¤tAlbumIndex atIndex:3];//删除相片的索引
[undoAction retainArguments]
[undoStack addObject:undoAction];//添加操作
// 4
[[LibraryAPI sharedInstance]deleteAlbumAtIndex:currentAlbumIndex];
[selfreloadScroller];//刷新视图
}
- (void)undoAction{
if (undoStack.count >0){
NSInvocation *undoAction = [undoStack lastObject];//取出上一步操作
[undoStack removeLastObject];
[undoAction invoke];//执行操作
}
}
通过保存操作即可实现撤销操作