Многократная операция с функцией отмены в задаче C - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть функция для отмены, которая работает хорошо. Мое приложение представляет собой редактор фотографий с несколькими эффектами. Когда я добавляю многократный эффект к моей фотографии и отменяю весь этот эффект, он работает очень хорошо, НО, когда я хочу снова добавить фильтр / эффект, и я хочу отменить еще раз, он не работает. Я имею в виду, что моя функция отмены работает только один раз.

Может кто-нибудь сказать мне, почему это работает только один раз?

есть моя функция, которая работает:


    - (void)updateImage:(UIImage*)Images {

        [undoManager registerUndoWithTarget:self selector:@selector(updateImage:) object:Images];

        _imageView.image = Images;

    }

    - (void)pushedUndoBtn:(id)sender
    {
       [undoManager undo];
    }

Вот как я ссылаюсь на моего менеджера по отмене:


    @implementation _CLImageEditorViewController
    {

        NSUndoManager * undoManager;

    } 

    - (void)viewDidLoad
    {
        [super viewDidLoad];

        undoManager = [[NSUndoManager alloc] init];

    }

1 Ответ

0 голосов
/ 03 сентября 2018

Вы должны передать старое изображение (_imageView.image) на -registerUndoWithTarget:selector:object:, а не новое изображение (Images). Вы хотите, чтобы операция отмены вызывала -updateImage: со старым образом для восстановления старого состояния. Итак:

    [undoManager registerUndoWithTarget:self selector:@selector(updateImage:) object:_imageView.image];
...