Confirmer ou pas un delete

muqaddarmuqaddar Administrateur
16:21 modifié dans API AppKit #1
Salut,

Grâce aux bindings on peut facilement créer des actions prêtes (add, remove...etc) sur des boutons.

Mon problème, c'ets que je voudrai demander des confirmations avant ces actions par des boà®tes de dialogue. Quand on passa par une IBaction, c'ets très facile, mais là , comment faire pour ajouter des propriétés à  ces actions pré-conçues ?

Réponses

  • 16:21 modifié #2
    Je ne suis sûr qu'on puisse le faire autrement que par un IBAction.

    Perso, j'ai fait u ntruc du genre:
    1) un controller qui a l'action delete et un outlet sur l'instance NSArrayController
    2) dans la méthode IBAction, tu affiche ta boite de dialogue et en fonction de son code retour tu appelles la méthode remove de la classe NSArrayController via ton outlet.

    Bon ça vaut ce que cela vaut mais cela résoud ton problème  :)
    J'espère tout de même qu'il y a un meilleur moyen  O0
  • muqaddarmuqaddar Administrateur
    16:21 modifié #3
    Ouais, à  vrai dire j'avais pensé à  ce moyen (en gros), c'ets vrai que c'ets dommage de devoir créer une action supplémentaire (à  l'ancienne) et de binder on the fly l'outlet... enfin, ça me paraà®t la meilleure des solutions.

    Merci deftones_chrix !
  • ClicCoolClicCool Membre
    16:21 modifié #4
    En sous Classant ton controleur tu peux implémenter

    des méthodes de NSObjectController:
    canAdd
    canRemove

    des méthodes de NSAArrayController (sous classe de NSObjectController)
    canInsert

    Et en prime, dans tes bindings, sans avoir à  toucher à  tes controleurs, tu peux utiliser le KeyValueValidation qui te permet de valider ou non une valeur saisie :)
    -(BOOL)validateName:(id *)ioValue error:(NSError **)outError
  • 16:21 modifié #5
    dans 1095190662:

    En sous Classant ton controleur tu peux implémenter

    des méthodes de NSObjectController:
    canAdd
    canRemove

    des méthodes de NSAArrayController (sous classe de NSObjectController)
    canInsert

    Et en prime, dans tes bindings, sans avoir à  toucher à  tes controleurs, tu peux utiliser le KeyValueValidation qui te permet de valider ou non une valeur saisie :)
    -(BOOL)validateName:(id *)ioValue error:(NSError **)outError


    Yes!!!! ça c'est de la bonne idée  :D
    Même si pour être la dernière partie m'est un peu obscure  ??? Mais cela est surement dû à  mon manque de connaissance sur les KeyValueXXXX
  • muqaddarmuqaddar Administrateur
    septembre 2004 modifié #6
    Attends, il m'a promis une meilleure idée mais ça lui revient pas... ;-)
  • muqaddarmuqaddar Administrateur
    16:21 modifié #7
    Bon j'ai essayé la première méthode :

    - (IBAction)removeGroup:(id)sender<br />{<br />   NSString *title = @&quot;Warning!&quot;;<br />  NSString *defaultButton = @&quot;Delete&quot;;<br />    NSString *alternateButton = @&quot;Don&#39;t Delete&quot;;<br />       NSString *otherButton = nil;<br />      NSString *message = @&quot;Are you sure you want to delete the selected record(s)?&quot;;<br /> NSBeep();<br /> <br />  NSBeginAlertSheet(title, defaultButton, alternateButton, otherButton, <br />                                    &nbsp; mainWindow, self, @selector(sheetDidEnd:returnCode:contextInfo:), <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nil, nil, message);<br />}<br /><br />- (void)sheetDidEnd:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo<br />{<br /> if (returnCode == NSAlertDefaultReturn) {<br />         [groupsController bind: @&quot;remove&quot; toObject: self withKeyPath:@&quot;selection.dicGroups.name&quot; options: nil];<br />       }<br />}
    


    Je n'arrive pas à  binder correctement et ça ne m'efface pas l'enregistrement. :(
    J'ai une erreur de key value compliant... Tu peux m'aiguiller deftones ?
  • muqaddarmuqaddar Administrateur
    16:21 modifié #8
    En fait, j'ai finalement fait comme ça :
    - (void)sheetDidEnd:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo
    {
    if (returnCode == NSAlertDefaultReturn) {
    [groupsController remove:_groups];
    }
    }

    ça m'efface bien l'enregistrement de mon tableau. Pourtant je me pose des questions (bêtes) : l'enregistrement est-il aussi effacé du dictionnaire correspondant ?
Connectez-vous ou Inscrivez-vous pour répondre.