2017-07-04 29 views
0

我正在创建一个iOS应用程序,用户可以在其中为图像添加效果。应用该效果后,我有一个done按钮,它可以保存当前效果并允许用户在已应用效果上添加下一个效果,因此用户可以对其他效果应用更多效果。如果用户不按Done按钮,然后他在效果之间切换,但用“完成”按钮,他可以对效果施加效果(希望你明白!)。现在我有两个额外的按钮名为Undo & Redo。当用户点击done按钮时,我将所有应用效果保存在array中。如何在包含图像的NSMutableArray上执行NSUndoManager?(Objective-C)

现在我想撤消应用效果,当点击undo按钮。当点击redo按钮时,反之亦然重做操作。我不知道如何使用NSUndoManager与包含图像的数组?

+0

请通过链接:http://szulctomasz.com/2015/09/13/ios-undo-and-redo-with-nsundomanager.html –

+0

@AshokLondhe我已经提到这一个,但其在迅速,我不太熟悉迅速,所以没有从这个想法。 thanx寻求帮助。 –

回答

0

那么,我已经通过不同的方式做到了这一点!除了使用NSUndoManager我刚刚使用了2 Arrays并且用它们完成了代码。

- (IBAction)onUndoClicked:(id)sender {  
if ([arrUndo lastObject] == nil) { 
     NSLog(@"EMPTY"); 
    } 
    else 
    { 
     [arrRedo addObject:[arrUndo lastObject]]; 
     NSLog(@"ArrAdd %@", [arrUndo description]); 

     [arrUndo removeLastObject]; 
     for (UIImage *obj in arrUndo) { 
      if ([arrUndo lastObject] == obj) { 

       _imgClicked.image = obj; 
      } 
     } 
    }} 

- (IBAction)onRedoClicked:(id)sender { 

    if ([arrRedo lastObject] == nil) { 
     NSLog(@"EMPTY"); 
    } 
    else 
    { 
     [arrEffectImages addObject:[arrRedo lastObject]]; 
     for (UIImage *obj in arrRedo) { 
      if ([arrRedo lastObject] == obj) { 
       _imgClicked.image = obj; 
      } 
     } 
    }} 
相关问题