2017-07-04 2 views
0

Je crée une application iOS dans laquelle l'utilisateur peut ajouter des effets aux images. Après avoir appliqué cet effet, j'ai un bouton done qui sauve l'effet actuel et permet à l'utilisateur d'ajouter l'effet suivant sur l'effet déjà appliqué, afin que l'utilisateur puisse appliquer plus d'effets sur d'autres effets. Si l'utilisateur n'appuie pas sur le bouton Done, il commute entre les effets mais avec le bouton "Terminé" il peut appliquer l'effet sur l'effet (J'espère que vous l'aurez compris!). Maintenant, j'ai deux boutons supplémentaires nommés Undo & Redo. Je sauvegarde tous les effets appliqués dans un array lorsque l'utilisateur clique sur le bouton done.Comment exécuter NSUndoManager sur NSMutableArray qui contient des images? (Objective-C)

Maintenant, je veux annuler les effets appliqués lorsque le bouton undo est cliqué. Et vice versa redo opération lorsque le bouton redo est cliqué.

Je sais à cet effet que je dois utiliser NSUndoManager mais je ne sais pas d'où je devrais commencer signifie que je ne sais pas comment utiliser NSUndoManager avec Array qui contient des images?

+0

S'il vous plaît passer par lien: http://szulctomasz.com/2015/09/13/ios-undo-and-redo-with-nsundomanager.html –

+0

@AshokLondhe J'ai déjà parlé, mais celui-ci son dans swift et je ne suis pas très familier avec swift donc ne pas avoir une idée de cela. merci pour l'aide. –

Répondre

0

Eh bien, j'ai fait cela de manière différente !! en plus d'utiliser NSUndoManager je viens d'utiliser 2 Arrays et fait du code avec eux.

- (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; 
      } 
     } 
    }}