Элементы меню «Отменить / Повторить» не работают с приложением «Документ» OSX 10.7 - PullRequest
0 голосов
/ 15 января 2012

Я создал очень простое тестовое приложение на основе документов с базовыми данными. Я не кодировал, просто подключил. Файл XIB имеет один контроллер массива, одно табличное представление и две кнопки, одну для добавления строки и одну для удаления. Контроллер массива связывается с управляемым владельцем объекта FilesObjectContext. Столбцы таблицы связаны с тремя объектами, определенными в модели. Кнопки подключены к контроллерам массива Add и Remove. Вот и все. Приложение работает нормально, но пункты меню для Отменить и Повторить остаются отключенными после добавления или удаления строк. Есть ли что-то, что вам нужно сделать, чтобы активировать функции отмены / возврата на этом уровне?

Ответы [ 2 ]

1 голос
/ 15 января 2012

Я думаю, что проблема здесь может быть связана с этим:

Столбцы таблицы связаны с тремя объектами, определенными в модели.

Я даже не уверен, как вы это сделаете (привязать разные столбцы к разным сущностям.) Мне интересно, если вы имеете в виду «три свойства, определенные для одной сущности в модели», но я не уверен.

Несмотря на это, я воспроизвел что-то вроде вашей настройки: простая сущность Person с одним строковым свойством name, NSArrayController, в режиме сущности, привязанный к (Владелец файла, managedObjectContext), NSTableView с одним столбцом привязан к (Array Controller, managedObjects, name) и все прекрасно работает, включая Undo и Redo.

Я бы рекомендовал начинать с этой простой точки (одна сущность, одно свойство, один столбец, все работает) и добавлять сложность / особенности по одной мелочи за раз, пока что-то не сломается - когда оно сломается, вы будете точно знать что сломало это. К счастью, вы начинаете с базового шаблона, так что не так уж много дополнительной логики приложения.

0 голосов
/ 15 января 2012

Если пункт меню отключен, это означает, что в цепочке респондента нет ничего, что отвечало бы на сообщение, которое он отправляет.В этом случае это, вероятно, означает, что ваше окно не возвращает undoManager.У вас должно быть что-то вроде этого в вашем контроллере окна:

- (NSUndoManager *)windowWillReturnUndoManager:(NSWindow *)sender
{
    return [self.managedObjectContext undoManager];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...