Хорошо, поэтому я хочу добавить возможность отмены определенных действий в моем приложении. Я собирался создать способ сделать это с помощью моих собственных протоколов или чего-то в этом роде, но потом я узнал о NSUndoManager
. Я хотел бы использовать заложенный фундамент, но не могу понять. Мне нужно отменить несколько бросков кубиков, поэтому, если бы я мог сохранить предыдущие броски как объекты в NSArray
, вероятно, было бы лучше всего. Я мог бы использовать NSMutableString
, но предпочтительнее использовать массив.
Тогда я знаю, что вы можете встряхнуть, чтобы отменить, но я бы предпочел кнопку. Это доставляло мне больше всего хлопот. Я включил свои попытки ниже. Ни один из них не работал. Любая помощь будет оценена.
В viewDidLoad:
undoManager = [[NSUndoManager alloc] init];
Затем в методе, который бросает кости, я попробовал:
[[undoManager prepareWithInvocationTarget:self] undoButton];
[[undoManager prepareWithInvocationTarget:self]
[[undoManager prepareWithInvocationTarget:self] setString:[NSString stringWithFormat:@"%i", dice1num]];
setStrings:[NSArray arrayWithObjects:[NSString stringWithFormat:@"%i", dice1num]
[NSString stringWithFormat:@"%i", dice1num],
[NSString stringWithFormat:@"%i", dice1num],
[NSString stringWithFormat:@"%i", dice1num],
[NSString stringWithFormat:@"%i", dice1num], nil]];
[[undoManager prepareWithInvocationTarget:@selector()];
[undoManager setActionName:@"A roll"];
А вот IBAction, которое ссылается на кнопку отмены:
-(IBAction)undoButton{
[undoManager undo];
}
заранее спасибо