如何在包含图像的 NSMutableArray 上执行 NSUndoManager?(Objective - C)

How to perform NSUndoManager on NSMutableArray which contains Images?(Objective - C)

我正在创建一个 iOS 应用程序,用户可以在其中为图像添加效果。应用该效果后,我有一个 done 按钮可以保存当前效果并允许用户在已应用的效果上添加下一个效果,因此用户可以在其他效果上应用更多效果。如果用户不按 Done 按钮,那么他会在效果之间切换,但使用 "Done" 按钮,他可以在效果上应用效果(希望你明白!)。现在我有两个额外的按钮,名为 UndoRedo。当用户单击 done 按钮时,我将所有应用的效果保存在 array 中。

现在我想撤消单击 undo 按钮时应用的效果。反之亦然,单击 redo 按钮时重做操作。

我知道为此目的我必须使用 NSUndoManager 但我不知道应该从哪里开始意味着我不知道如何将 NSUndoManager 与包含图像的数组一起使用?

好吧,我用不同的方式做到了!!除了使用 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;
            }
        }
    }}