Добавьте в меню "Открыть последние" пункт, который не указывает на файл
Есть ли способ добавить элемент , который не указывает на файл, который существует в файловой системе, в меню "Открыть последние"?
В приложении, не основанном на NSDocument, я могу добавить элемент в подменю "Открыть последние" со следующим кодом:
[[NSDocumentController sharedDocumentController] noteNewRecentDocumentURL:[NSURL URLWithString:stringToFilePath]];
Он работает так, как задокументировано, если URL указывает на файл, который существует в файловой системе.
Если URL-адрес не указывает на файл в системе, такой как веб-URL или пользовательская схема URL-адреса, ничего не происходит.
Например, этот код не имеет никакого эффекта и не производит журнал во время выполнения, даже если мое приложение обрабатывает схему, используемую в URL:
[[NSDocumentController sharedDocumentController] noteNewRecentDocumentURL:[NSURL URLWithString:@"http://www.stackru.com"]];
Обновление: кто-то нашел (давно) способ настроить это меню, чтобы оно отображало файлы независимо от того, существуют они или нет: http://lists.apple.com/archives/cocoa-dev/2007/Apr/msg00651.html
Мне удалось создать подкласс NSDocumentController, но переопределение метода - (NSArray *) RecentDocumentURLs никогда не вызывалось.
Это не очень удивительно, как говорит доктор:
Этот метод не подходит для переопределения, поскольку внутренняя часть NSDocumentController обычно не использует его.
Но документ не говорит, что использовать вместо этого, и плакат не дал больше деталей. Любая идея?
Если решения не существует, на обходной путь будет переписать все меню с нуля. Если возможно, я бы предпочел избегать этого, для всех вещей, которые я получаю бесплатно (например, когда у вас есть два элемента с одинаковым именем, он также отображает родительский каталог, чтобы помочь их дифференцировать).
1 ответ
Похоже, вам, вероятно, придется создать свое собственное меню и вести собственный отдельный список. Это меню автоматически исключает файлы, которые не существуют.
Я полагаю, что это также верно для файлов на сменном носителе, который отсутствует (то есть, если носитель возвращается, я считаю, что файл снова будет доступен в списке, если он не был удален более поздними элементами).