Afficher une NSView au premier plan

Bonjour


 


Mon appli affiche 4 NSView pour l'affichage de graphiques. Lorsque je clique sur l'une d'elles, elle se déplace au centre de l'écran pour faire différentes saisies. Cependant, je n'arrive pas à  placer la NSView qui vient de se déplacer au premier plan. Pourtant, sur iOS, il y a "bringToFront" qui était parfait mais je ne retrouve pas l'équivalent sur OSX et donc je n'arrive pas non plus à  le faire via d'autres principes. Du coup, comment mettre au premier plan une NSView ?


 


Merci d'avance


 


Réponses

  • Bonjour,


     


    Vue sur StackOverFlow:



    [mavue removeFromSuperview];
    [[mafenetre contentView] addSubview:mavue positioned:NSWindowAbove relativeTo:nil];
  • Fred20Fred20 Membre

    Génial, merci


     


    Je ne serais jamais aller chercher dans cette direction

  • mpergandmpergand Membre
    mai 2013 modifié #4


     


    Bonjour,


     


    Vue sur StackOverFlow:



    [mavue removeFromSuperview];
    [[mafenetre contentView] addSubview:mavue positioned:NSWindowAbove relativeTo:nil];



     



     


    There is a problem with the above approach. First, when you send removeFromSuperview to a view, it is released.

     



     


    http://stackoverflow.com/questions/2872840/how-do-i-make-an-nsview-move-to-the-front-of-all-nsviews


     


     


    Avec ce code:



    Below given code should work fine..

    NSMutableArray *subvies = [NSMutableArray arrayWithArray:[self subviews]];//Get all subviews..

    [viewToBeMadeForemost retain]; //Retain the view to be made top view..

    [subvies removeObject:viewToBeMadeForemost];//remove it from array

    [subvies addObject:viewToBeMadeForemost];//add as last item

    [self setSubviews:subvies];//set the new array..

    On doit pouvoir remplacer les deux méthodes remove/add par :


    exchangeObjectAtIndex:withObjectAtIndex:


  • AliGatorAliGator Membre, Modérateur


    There is a problem with the above approach. First, when you send removeFromSuperview to a view, it is released.


     



     


    C'est vrai... sauf à  priori si tu utilises ARC (y'a bien ARC de dispo sous OSX aussi, non ?)


     


    Note que je pense que removeFromSuperview est inutile : quand on ajoute une UIView à  une superview, si la UIView était déjà  dans une hiérarchie de vue elle va en être retirée avant d'être rajoutée en subview à  la nouvelle, car elle ne peux pas être subview de 2 vues parentes différentes.


    Et du coup même si c'est la même superview qu'on utilise là  car le but est juste de la repositionner au dessus des autres subviews, même dans ce cas je pense pas qu'il soit nécessaire d'appeler removeFromSuperview avant. Le code interne de addSubview:positionned:relativeTo: doit déjà  le faire tout seul, et en plus gérer ces questions de retain/release pour éviter les risques évoqués ici.

Connectez-vous ou Inscrivez-vous pour répondre.