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

时间:2017-07-04 06:34:11

标签: ios objective-c uiimage nsmutablearray nsundomanager

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

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

我知道为了这个目的我使用NSUndoManager但我不知道从哪里开始意味着我不知道如何使用NSUndoManager包含图像的数组?

1 个答案:

答案 0 :(得分: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;
            }
        }
    }}