2010-07-13 6 views
5

C'è un modo per aggiungere un elemento che non punta a un file esistente sul file system per "Apri" Recente "menu?Aggiungi al menu "Apri recenti" un elemento che non punta a un file

In un'applicazione non basata su NSDocument, posso aggiungere un elemento al sottomenu "Apri recenti" con il seguente codice:

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

Funziona come documented, a patto che l'URL punta a un file esistente sul file system.

Se l'url non punta a un file sul sistema, come un URL Web o uno schema di URL personalizzato, non accade nulla.

Ad esempio, questo codice non ha alcun effetto, e non producono alcun log durante l'esecuzione, anche se la mia app gestisce lo schema utilizzato nella URL:

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

Aggiornamento: qualcuno ha trovato (molto tempo fa) un modo per modificare questo menu per far visualizzare i file, che esistano o meno: http://lists.apple.com/archives/cocoa-dev/2007/Apr/msg00651.html

Sono riuscito a creare sottoclasse NSDocumentController, ma il mio override del metodo - (NSArray *) recentDocumentURLs non viene mai chiamato.

Non è molto sorprendente, come il dottore dice:

Questo metodo non è una buona per esclusione dal momento che la struttura interna di NSDocumentController genere non usarlo.

Ma il documento non dice cosa usare invece e il poster non ha fornito ulteriori dettagli. Qualche idea?


Se non c'è soluzione, sulla soluzione sarebbe di riscrivere l'intero menu da zero. Se possibile, preferirei evitare che, per tutte le cose che ottengo gratuitamente (come quando hai due elementi con lo stesso nome, visualizza anche la directory principale per aiutarli a differenziarli).

risposta

4

Sembra che probabilmente dovrai creare il tuo menu e mantenere la tua lista separata. Questo menu esclude automaticamente i file che non esistono.

Credo che questo valga anche per i file su supporto rimovibile che è assente (ad esempio, se il supporto torna, credo che il file sia di nuovo disponibile nell'elenco se non è stato spinto fuori più recente elementi).

+0

Ho contattato la persona che ha postato sulla mailing list di Apple. Sebbene abbia sottoclasse NSDocumentController, come non viene mai chiamato recentDocumentURLs, finisce costruendo manualmente il menu. – Guillaume

+0

Questo corrisponde alla mia esperienza con gli URL non file. – paulmelnikow

+0

Sì, ho anche creato un elenco separato e mostrato un menu simile per l'utente. Nel mio caso l'elenco ha tipi di località miste (locale, url, cloud). Ho dovuto aprire il mio "recente recente" per il caso di file locali, ma non sono riuscito a far sì che l'app associasse i file alla loro posizione: al momento del salvataggio, la finestra di dialogo "Salva con nome" mostra –