要撤銷上一步甚至是上上一步的操作,首先得保存以上那些步驟,比如刪除相片與撤銷刪除的操作,刪除時就得保存刪除的相片索引等信息,保存操作,在撤銷時按照索引取出操作即可恢復上一步的狀態,代碼如下:
- (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];//執行操作
}
}
通過保存操作即可實現撤銷操作