2009-01-14 10 views
0

J'ai sous-classé NSPersistentDocument. J'ai renommé la fenêtre aussi. Mais quand je lance l'application, le titre de la fenêtre de l'application est "Sans titre". Il n'y a pas de méthode -setTitle: que je peux utiliser pour changer le titre. Des idées comment puis-je faire cela?Comment attribuer un titre à la fenêtre NSPersistentDocument

Répondre

3

Avez-vous défini le titre en envoyant setTitle: à la fenêtre?

Si c'est le cas, c'est faux. Définissez le displayName du document à la place. (Rappelez-vous, NSPersistentDocument est une sous-classe de NSDocument.)

3

Vous ne changez pas le titre, vos utilisateurs le font en enregistrant des documents.

0

Vous pouvez lier le titre de la fenêtre au document et utiliser Key-Value-Observation pour le mettre à jour.

Avec Interface Builder, sélectionnez la 'Fenêtre' de MyDocument.xib et passez à l'onglet 'Liaisons' dans l'inspecteur. Cochez le 'Titre' pour lier le 'Propriétaire du fichier' et le 'Chemin de clé du modèle' pour être 'titre'.

Ensuite, dans votre sous-classe de NSPersistentDocument ajouter ce code

@interface MyDocument : NSPersistentDocument { 
    NSString * _title; 
} 
@end 

@implementation MyDocument 

//P All kinds of all your good stuff here 

- (NSString *) title { 
    return _title; 
} 

@end 

Maintenant, si vous voulez changer le titre de la fenêtre, vous pouvez utiliser KVO. Par exemple

- (BOOL)readFromURL:(NSURL *)absoluteURL 
      ofType:(NSString *)typeName 
       error:(NSError **)outError { 

    //P All your good code 

    [self willChangeValueForKey:@"title"]; 
    _title = [absoluteURL lastPathComponent]; 
    [self didChangeValueForKey:@"title"]; 

    //P More good code 

} 
Questions connexes