2011-01-18 36 views
6

He creado una aplicación Mac OSX basada en documentos, y cuando estoy editando en Interface Builder, el título es correcto (llené esa parte del inspector) pero una vez el programa se ejecuta, el título de la aplicación es 'Sin título'. ¿Cómo puedo cambiarlo? En mi Ventana de IB Doc, tengo instancias de Propietario de archivos, Primer Respondedor, NSApplication y NSWindow. No hay controlador de vista, ¿ese es el problema? Soy nuevo en Cocoa ..Cocoa Mac Título de la aplicación Título: "sin título"

+0

Probablemente cambie al nombre de su documento una vez que lo haya guardado (o abierto uno). – zneak

+0

Lo hace. Pero, ¿hay alguna manera de establecerlo en un valor predeterminado? Prefiero que no diga 'Sin título' – Zakman411

+3

Zakman411: Nombrar un documento nuevo, no guardado "sin título" es la forma correcta de acuerdo con el HIG. http://developer.apple.com/library/mac/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGWindows/XHIGWindows.html#//apple_ref/doc/uid/20000961-CHDHBCGE ¿Por qué quiere violar esa convención? –

Respuesta

12

Una solución es anular -displayName en su NSDocument subclase:

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

    return [super displayName]; 
} 

También puede comprobar fuera de NSWindowController 's -windowTitleForDocumentDisplayName: si está utilizando controladores de encargo de la ventana.

2

ha creado una aplicación Cocoa basada en documentos. Para documentos nuevos, Cocoa establece el nombre propuesto del documento en 'Sin título'.

+2

Correcto, pero ¿sabes cómo cambiar eso? – Zakman411

1

¿Te refieres al título del menú de la aplicación? Eso se cambia para coincidir con el nombre de la aplicación en tiempo de ejecución. La forma más sencilla de cambiarlo sería cambiar la configuración de creación del nombre del producto en su objetivo en Xcode.

+0

Esa configuración en realidad tiene el nombre correcto pero aún no se mostrará. ¿Qué me estoy perdiendo? – 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

¿Podría agregar alguna descripción a ese código? ¿Qué hace? ¿Cómo lo hace? Gracias – Cullub

0

Eso es porque usted marcó Crear aplicaciones basadas en documentos cuando creó este proyecto:

new project options

Usted puede eliminarlo del info.plist haciendo clic en el - botón junto a documento tipos:

info.plist

Escriba su propio título en Storyboard y verifique la ventana "es Controlador Inital". Después de ejecutar su proyecto nuevamente, estará bien.