Как я могу убедиться, что в пунктах меню Undo и Redo добавлена ​​строка действия? - PullRequest
1 голос
/ 22 марта 2011

В моем приложении работает отмена / повтор.

Я установил цель действий меню отмены и возврата для моего делегата приложения, чтобы реализовать действия с методами undoAction: и redoAction:.Включенные привязки пунктов меню привязаны к свойствам canUndo и canRedo моего менеджера отмены, и они работают как положено.Я задаю имя действия, когда нажимаю на стек отмены, но никогда не вижу его в меню.

Почему в моем меню всегда говорится «Отменить» или «Повторить», а не «Отменить перемещение в корзину» и «Повторить перемещение в корзину»?Обновляется ли пункт меню каким-то волшебством, которое я обхожу?Я не использовал цепочку респондента, потому что мой делегат приложения не входит в цепочку респондента и поэтому никогда не видит действия.

Менеджер отмены создан в моем делегате приложения.

Обновление: изменениеиспользовать менеджер отмены окна не имеет значения.

-(void)undoableRemoveItemsFromListAtIndexes:(NSIndexSet*)itemIndexes;
{
    NSArray *removedItems = [[self.listController arrangedObjects] objectsAtIndexes:itemIndexes];
    [[self.undoManager prepareWithInvocationTarget:self] undoableAddItems:removedItems toListAtIndexes:itemIndexes];
    [self removeItemsFromListAtIndexes:itemIndexes];
    [self.undoManager setActionName:@"Move to Trash"];
}

Ответы [ 2 ]

1 голос
/ 22 марта 2011

Проверьте, не отменен ли менеджер отмены, и поменяйте строки соответствующим образом.

NSUndoManager * um = [self undoManager];
// ...
[um setActionName:([um isUndoing]) ? @"Remove Foo" : @"Add Foo"];

Важно помнить, что повтор - это отмена, помещенная в стек повторного выполнения.

0 голосов
/ 23 марта 2011

Ответ оказался одним или несколькими из следующих (из справки в NSCoder Night Campbell):

  • Используйте менеджер отмены окна, а не тот, который я создал

  • Удалите привязки, которые у меня были, и подключите пункты меню к первому ответчику

  • Назовите методы в моем делегате приложения отменить: и повторить:

Как только я сделал все, все это волшебным образом сработало.

...