[RESOLU] Quitter l'application en fermant la fenêtre

kOrt3xkOrt3x Membre
février 2013 modifié dans API AppKit #1
[font=verdana, geneva, lucida,]Bonjour,[/font]



[font=verdana, geneva, lucida,]Pour une application, je souhaiterai que quand on ferme la fenêtre de l'application (en cliquant sur le bouton rouge en haut à  gauche) l'application se quitte.[/font]



[font=verdana, geneva, lucida,]J'ai testé avec la code suivant : [/font]






<br />
<br />
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication {<br />
	return YES;<br />
}<br />
<br />
<br />


[font=verdana, geneva, lucida,]Mais rien ne se pas.[/font]

[font=verdana, geneva, lucida,]Je n'ai pas d'erreur, pas de warning, rien.[/font]



[font=verdana, geneva, lucida,]Avez-vous un idée ? ou une autre solution ?[/font]

Réponses

  • AliGatorAliGator Membre, Modérateur
    Tu as bien mis ce code dans ton AppDeletate (c'est à  dire dans la classe qui sert de delegate de ton UIApplication) ?
  • kOrt3xkOrt3x Membre
    février 2013 modifié #3
    Voici mon code :


    <br />
    //<br />
    //  AppDelegate.m<br />
    //<br />
    //<br />
    //  Created by  on 01/10/12.<br />
    //  Copyright © 2012 __MyCompanyName__. All rights reserved.<br />
    //<br />
    #import &quot;AppDelegate.h&quot;<br />
    @implementation AppDelegate<br />
    @synthesize window = _window,bouton;<br />
    - (void)applicationDidFinishLaunching:(NSNotification *)aNotification<br />
    {<br />
    	// Insert code here to initialize your application<br />
    }<br />
    - (IBAction)buttomOk:(id)sender{<br />
       // code ici<br />
      <br />
    }<br />
    - (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication {<br />
    	return YES;<br />
    }<br />
    - (void)dealloc<br />
    {<br />
    	[super dealloc];<br />
    }<br />
    @end<br />
    
  • Quid du côté de applicationShouldTerminate: ?
  • Toujours pas trouvé la solution... :'(
  • Bonjour,



    Tu peux forcer la fermeture de ton application avec


    <br />
    [NSApp terminate:nil];<br />
    <br />
    




    que tu peux mettre dans dans la notification suivante de ta fenêtre:



    - (void)windowWillClose:(NSNotification *)notification
  • Question bête mais le delegate est bien renseigné dans ton fichier NIB ? Tu peux essayer de mettre un point d'arrêt dans la fonction un un NSLog pour vérifier que tu y passe bien.
  • [font=verdana, geneva, lucida,]C'est bon, avec tes indications, j[/font][font=verdana, geneva, lucida,]'ai réussi.[/font]

    [font=verdana, geneva, lucida,]J'ai utilisé ce code qui fonctionne : [/font]




    - (void) windowWillClose: (NSNotification *) notification<br />
    {<br />
        NSLog(@&quot;Yep, delegate was notified that window will be closed. Quitting application.&quot;);<br />
        [NSApp terminate:nil];<br />
    }
    




    Merci à  vous tous. image/wink.png' class='bbc_emoticon' alt=';)' />
  • Il y a également la méthode:

    - (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication

    qui marche bien. Enfin tout dépend du fonctionnement que tu souhaites et du nombre de fenêtre que tu as.

    Généralement on souhaite fermer l'application à  la fermeture d'une fenêtre particulière, même si d'autre fenêtres sont ouvertes.


    c'est à  dire dans la classe qui sert de delegate de ton UIApplication
    UIApplication ou NSApplication ?
  • 'kOrt3x' a écrit:


    [font=verdana, geneva, lucida,]C'est bon, avec tes indications, j[/font][font=verdana, geneva, lucida,]'ai réussi.[/font]

    [font=verdana, geneva, lucida,]J'ai utilisé ce code qui fonctionne : [/font]




    - (void) windowWillClose: (NSNotification *) notification<br />
    {<br />
    	NSLog(@&quot;Yep, delegate was notified that window will be closed. Quitting application.&quot;);<br />
    	[NSApp terminate:nil];<br />
    }
    




    Merci à  vous tous. image/wink.png' class='bbc_emoticon' alt=';)' />




    Oui mais c'est incohérent, car c'est parce que ton AppDelegate est delegate de NSWIndow que cette méthode est appelée et pas delegate de NSApplication.



    Normalement, depuis Xcode 3, cette classe delegate est générée automatiquement pour tout nouveau projet, et dans IB cette classe est bien comme delegate de NSApplication ( File'sOwner)

    Vérifie bien que c'est le cas.
Connectez-vous ou Inscrivez-vous pour répondre.