2011-01-18 3 views
6

Ho creato un'applicazione per Mac OSX basata su documenti e quando eseguo l'editing in Interface Builder, il titolo è corretto (ho compilato quella parte dell'ispettore) ma una volta che il programma corre, il titolo dell'applicazione è 'Senza titolo'. Come posso cambiarlo? Nella mia finestra IB Doc, ho istanze di Proprietario file, First Responder, NSApplication e NSWindow. Non c'è un controller di visualizzazione, è questo il problema? Sono nuovo di Cocoa ..Titolo applicazione Cocoa Mac dice: "senza titolo"

+0

Probabilmente cambierà il nome del documento una volta salvato (o aperto). – zneak

+0

Lo fa. Ma c'è un modo per impostarlo su un valore predefinito? Preferirei che non dicesse 'Senza titolo' – Zakman411

+3

Zakman411: nominare un nuovo documento non salvato "senza titolo" è il modo corretto secondo la HIG. http://developer.apple.com/library/mac/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGWindows/XHIGWindows.html#//apple_ref/doc/uid/20000961-CHDHBCGE Perché vuoi violare tale convenzione? –

risposta

12

Una soluzione è quella di ignorare -displayName nel NSDocument sottoclasse:

- (NSString *)displayName { 
    if (![self fileURL]) 
     return @"Some custom untitled string"; 

    return [super displayName]; 
} 

È possibile anche controllare NSWindowController s' -windowTitleForDocumentDisplayName: se si sta utilizzando i controller finestra personalizzata.

2

hai creato un'applicazione Cocoa basata su documenti. Per i nuovi documenti, Cocoa imposta il nome proposto del documento su "Untitled".

+2

Giusto, ma sai come cambiarlo? – Zakman411

1

Intendi il titolo del menu dell'applicazione? Questo è cambiato per abbinare il nome dell'applicazione in fase di esecuzione. Il modo più semplice per cambiarlo sarebbe modificare l'impostazione di creazione del nome prodotto sulla destinazione in Xcode.

+0

Questa impostazione ha effettivamente il nome corretto ma non verrà ancora visualizzata. Cosa mi manca? – Zakman411

0
- (NSString *)displayName 
{ 
    NSMutableString *displayName = [NSMutableString stringWithString:[super displayName]]; 

    if ([self fileURL] == nil) { 
     NSString *firstCharacter = [[displayName substringToIndex:1] lowercaseString]; 
     [displayName deleteCharactersInRange:NSMakeRange(0, 1)]; 
     [displayName insertString:firstCharacter atIndex:0]; 
    } 

    return [NSString stringWithString:displayName]; 
} 
+0

Potresti aggiungere qualche descrizione a quel codice? Che cosa fa? Come lo fa? Grazie – Cullub

0

Questo perché è stata selezionata creare un documento-based quando hai creato questo progetto:

new project options

è possibile rimuoverlo dal info.plist cliccando sul - tasto accanto documento tipi:

info.plist

Digitare il proprio titolo in Storyboard e controllare la finestra su "è Inital Controller". Dopo aver eseguito nuovamente il progetto, sarà OK.