ios使用消息轉發實現撤銷操作

要撤銷上一步甚至是上上一步的操作,首先得保存以上那些步驟,比如刪除相片與撤銷刪除的操作,刪除時就得保存刪除的相片索引等信息,保存操作,在撤銷時按照索引取出操作即可恢復上一步的狀態,代碼如下:

- (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:&currentAlbumIndex 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];//執行操作

    }

}

通過保存操作即可實現撤銷操作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章