2016-01-05 1 views
1
//My code: 

- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag 
{ 
    if(flag==NO) 
    { 
     id window; 

     NSWindow *w = window; 

     for(w in theApplication.windows) 
     { if(w==[[theApplication windows]objectAtIndex:0]) 
      { 
       [w makeKeyAndOrderFront:nil]; 
      } 
     } 

    } 
    return YES; 
} 

- (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)sender; 
{ 
    return NO; 
} 
- (BOOL)applicationOpenUntitledFile:(NSApplication *)sender 
{ 

    return NO; 
} 

Problème Face Code -Above montre la fenêtre sans titre je supprimer [w makeKeyAndOrderFront:nil]; -Si sur if état puis toutes les fenêtres avec fenêtre sans titre est affiché une fois -Utiliser méthode ouverte sans titre n'est pas stoping sa fenêtre pour afficherNSWindow re montrent plusieurs fois de l'icône du dock après fermeture

Requis -Je veux que la fenêtre fermée pour ouvrir

+0

pas clair, s'il vous plaît expliquer un peu –

+0

Vous pouvez sous-classe 'NSWindow' et ajouter un' BOOL' isClosed – ColdSteel

+0

code ci-dessus est affiché dans l'App delegate.m - j'ai 3 fenêtres dans ma hiérarchie de la vue, donc je veux la fenêtre fermé par l'utilisateur pour ouvrir à nouveau lorsque l'on clique sur l'icône du dock –

Répondre

0

Après enquête plus sur le code mentionné, j'ai trouvé la solution qui est la suivante

-Méthodes utilisés sont propres - Pour charger votre même écran à nouveau, nous devons trouver l'index de cet écran dans application.windows array.That peut être fait en utilisant le code:

for (int i; i<[[[NSApplication sharedApplication]windows] count]; i++) 
    { 
     if (yourwindow==[[[NSApplication sharedApplication]windows] objectAtIndex:i]) 
     { 
      NSLog(@"%d",i); 
      //i is your screen index 
     } 
    } 

fenêtre Importer Maintenant, en utilisant index dans le code mentionné, il empêchera également l'exposition de la fenêtre sans titre

Note: l'index de recherche de fenêtre devrait être employé après que la méthode de chargement soit complétée.