Сброс Отменить / Повторить массив iOS
Я хочу отменить и повторить штрихи и изменения в приложении для рисования, используя NSUndoManager. Я сохраняю изображение с помощью UIGraphicsGetImagefromCurrentImageContext() на изменяемый массив.
Мой код ниже дает представление:
- (void) performUndoRedo:(BOOL) undo
{
if (undo)
{
[undoManager undo];
}
else
{
[undoManager redo];
}
NSLog(@"layerArray:%@", layerArray);
[self drawImage:[layerArray lastObject]];
}
- (void) redo:(id) object
{
[layerArray addObject:object];
[[undoManager prepareWithInvocationTarget:self] undo:object];
[undoManager setActionName:@"drawredo"];
// NSLog(@"layerArray IN REDO:%@", layerArray);
}
- (void) undo:(id) object
{
[[undoManager prepareWithInvocationTarget:self] redo:object];
[undoManager setActionName:@"drawundo"];
[layerArray removeObject:object];
// NSLog(@"layerArray IN UNDO:%@", layerArray);
}
- (void) touchesEnded:(NSSet *) touches withEvent:(UIEvent *) event
{
UIGraphicsBeginImageContext(self.bounds.size);
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *layerImage = UIGraphicsGetImageFromCurrentImageContext();
[layerArray addObject:layerImage];
[self undo:layerImage];
UIGraphicsEndImageContext();
NSLog(@"%@", layerArray);
}
Как и в какой момент я могу очистить layerArray и сбросить стек отмены? заранее спасибо
2 ответа
Похоже, вы можете использовать методы в каждом из этих классов для очистки:
layerArray
являетсяNSMutableArray
- Из документов для
removeAllObjects
Опорожняет массив всех его элементов.
- Из документов для
undoManager
являетсяNSUndoManagaer
:- Из документов для
removeAllActions
:Очищает стеки отмены и повтора и повторно включает приемник.
- Из документов для
2012-04-23 05:03