2012-02-23 20 views
9

Tengo una aplicación Cocoa con una ventana secundaria creada usando una subclase de NSWindowController. Deseo establecer el título de la ventana. La llamada al método documentado es setTitle :. He llamado a esto desde dentro del controlador ventana de la siguiente manera:Cocoa: ¿Cómo establecer el título de la ventana?

- (void)windowDidLoad 
{ 
    // set window title 
    [[self window] setTitle:@"test string"]; 
} 

Esto no afecta el título de la ventana sin embargo.

¿Alguna sugerencia por favor?

+1

¿Se está llamando a ese método? – ThomasW

Respuesta

5

La referencia de clase NSWindowController indica que, para personalizar el título, debe anular el método windowTitleForDocumentDisplayName:.

+0

He leído los documentos e intenté sin éxito – tobin

15

puede conectar su ventana con IBOutlet y luego cambiar su código:

[[self window] setTitle:@"test string"]; 

A esto:

[yourWindow setTitle:@"test string"]; 

código completo, por ejemplo:

.h

IBOutlet NSWindow *yourWindow; //Don't forget to connect window to this 

.m

-(void)awakeFromNib { 
    [yourWindow setTitle:@"test string"]; 
} 



Y, por supuesto, puede cambiar el título no programáticamente:

título se puede cambiar en Atributos inspector:

enter image description here

+3

No es necesario que lo haga. 'NSWindowController' ya tiene una salida de' ventana', solo necesita conectar eso. –

+0

Lo probé con esa salida (ver la publicación inicial) sin ningún efecto. – tobin

+0

Muchas gracias. Usar otra salida en lugar de la 'ventana' predeterminada de NSWindowController funciona correctamente. ¿Alguien puede explicar este comportamiento? – tobin

0

En Swift esto se puede hacer con: someOutlet.title = "New Title"

Aquí es un ejemplo que vive en la ventana de su clase controlador:

@IBOutlet weak var contentOutlet: NSWindow! 

override func windowDidLoad() { 
    super.windowDidLoad() 

    contentOutlet.title = "New Title" 
} 

Una vez más, recuerde que debe conectar la salida a la ventana, o simplemente arrastrar una salida desde la ventana de su clase controlador ventana .

3

sólo tiene que utilizar

self.window?.title = "Some String" 

donde se crea la ventana.

Cuestiones relacionadas