Я изучаю Cocoa, и мне без особых проблем удалось отменить операцию. Но метод setActionName: меня озадачивает. Вот простой пример: игрушечное приложение, окна которого содержат одну текстовую метку и две кнопки. Нажмите кнопку «Вкл.», И на этикетке появится надпись «Вкл.». Нажмите кнопку Off, и надпись изменится на «Off». Вот два соответствующих метода (единственный код, который я написал для приложения):
-(IBAction) turnOnLabel:(id)sender
{
[[self undoManager] registerUndoWithTarget:self selector:@selector(turnOffLabel:) object:self];
[[self undoManager] setActionName:@"Turn On Label"];
[theLabel setStringValue:@"On"];
}
-(IBAction) turnOffLabel:(id)sender
{
[[self undoManager] registerUndoWithTarget:self selector:@selector(turnOnLabel:) object:self];
[[self undoManager] setActionName:@"Turn Off Label"];
[theLabel setStringValue:@"Off"];
}
Вот чего я ожидал:
Фактически , все эти вещи работают так, как я ожидал, кроме последнего. Пункт в меню «Правка» гласит «Вернуть выключить ярлык», а не «Вернуть ярлык включения». (Когда я щелкаю по этому пункту меню, метка становится «Вкл.», Как я и ожидал, но это делает название пункта меню еще более загадочным.)
Что я неправильно понял, и как я могу заставить эти пункты меню отображать то, что я хочу?