Добавьте в меню «Открыть последние» пункт, который не указывает на файл - PullRequest
7 голосов
/ 13 июля 2010

Есть ли способ добавить элемент , который не указывает на файл, который существует в файловой системе , в меню «Открыть последние»?

В приложении, не основанном на NSDocument, я могу добавить элемент в подменю «Открыть последние» со следующим кодом:

[[NSDocumentController sharedDocumentController] noteNewRecentDocumentURL:[NSURL URLWithString:stringToFilePath]];

Он работает как задокументировано , покаURL-адрес указывает на файл, который существует в файловой системе.

Если URL-адрес не указывает на файл в системе, например веб-URL или пользовательскую схему URL-адреса, ничего не происходит.

Например, этот код не имеет никакого эффекта и не производит журнал во время выполнения, даже если мое приложение обрабатывает схему, использованную в URL:

[[NSDocumentController sharedDocumentController] noteNewRecentDocumentURL:[NSURL URLWithString:@"http://www.stackoverflow.com"]];

Обновление: кто-то нашел(давным-давно) способ настроить это меню, чтобы оно отображало файлы независимо от того, существуют они или нет: http://lists.apple.com/archives/cocoa-dev/2007/Apr/msg00651.html

Мне успешно удалось создать подкласс NSDocumentController, но мое переопределение метода - (NSArray *)RecentDocumentURLs никогда не вызывается.

Это не очень удивительно, так какВ документе сказано:

Этот метод не подходит для переопределения, поскольку внутренняя часть NSDocumentController обычно его не использует.

Но в документе ничего не сказаноиспользовать вместо этого, и плакат не дал больше деталей.Любая идея?


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

1 Ответ

6 голосов
/ 13 июля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...