Conteneur de NSView

ademoademo Membre
23:06 modifié dans API AppKit #1
Bonjour,

Je me lance dans mon premier projet grandeur nature depuis mon switch.... Il ne me semble pas avoir trouvé ici la solution à  mon problème.
Sur ma fenêtre principale j'ai une NSOutlineView (sur la partie gauche) dans laquelle je choisis ce que je veux faire. Je charge alors une NSView dans un fichier nib et j'aimerai la faire appraà®tre dans toute la zone de droite. Comme dans mail (ou Outlook...) par exemple.
Comment faire ?
Je n'ai rien trouver d'autre (mais je débute) que l'exemple d'Apple qui consiste à  avoir dans le controlleur de la fenêtre principal un outlet sur une NSTabView (à  1 seul item) puis de mettre la NSView (includeView) dans un NSTabViewMenuItem via
[[outlet_en_question selectedTabViewItem] setView: includeView ]
Le souci que j'ai c'est que je n'arrive pas à  placer cette includeView en haut à  gauche du cadre, elle se trouve, en toute logique, en bas à  gauche. Comment faire pour la redimensionner ? J'ai essayé avant de la placer et après mais en vain.
Merci.

Réponses

  • UniXUniX Membre
    23:06 modifié #2
    Salut et bienvenue sur Objective-Cocoa  :p !

    Pour redimensionner et/ou déplacer une vue, tu dois utiliser la méthode - (void)setFrame:(NSRect) frameRect
    A noter que, si tu ne veux que déplacer, ou qu'agrandir, tu as également des variantes permettant de ne changer que l'origine ou que la taille (regardes la doc de NSView).
  • BruBru Membre
    23:06 modifié #3
    Pour faire les choses simples (et surtout pas trop mal), tu peux utiliser un split-view.
    Ce view permet d'héberger 2 sub-views, l'une à  gauche, l'autre à  droite, avec en prime la possibilité de régler la taille de l'une par rapport à  l'autre.

    Enfin, pour changer le include-view dynamiquement, il suffit d'utiliser la méthode replaceSubview:with: de NSView avec en paramètre l'ancien include-view à  virer, et le nouveau include-view à  faire apparaitre.

    .
  • Philippe49Philippe49 Membre
    juin 2007 modifié #4
    dans 1181809127:


    Je n'ai rien trouver d'autre (mais je débute) que l'exemple d'Apple qui consiste à  avoir dans le controlleur de la fenêtre principal un outlet sur une NSTabView (à  1 seul item) puis de mettre la NSView (includeView) dans un NSTabViewMenuItem ...



    Pourquoi une NSTabView avec un seul item ?
    Une simple custom view devrait suffire .
  • 23:06 modifié #5
    Ou sinon plus simple, tu mets une NSBox ds la partie droite, et tu utilises
    <br />[myBox setContentView:myView];<br />
    



  • LeChatNoirLeChatNoir Membre, Modérateur
    23:06 modifié #6
    Bon je sais pas si les différentes propositions t'ont suffit mais je pense à  un truc tout bête : si tu veux que ta custom view se place correctement, pense dans IB à  régler les "ressorts" dans les propriétés Size. Tu peux définir l'origine et la manière dans la vue va suivre son contenant.
    Une fois bien réglé, normalement, ta custom view s'adapte correctement à  son contenant.
    A+
  • 23:06 modifié #7
    dans 1182428146:

    Bon je sais pas si les différentes propositions t'ont suffit mais je pense à  un truc tout bête : si tu veux que ta custom view se place correctement, pense dans IB à  régler les "ressorts" dans les propriétés Size. Tu peux définir l'origine et la manière dans la vue va suivre son contenant.
    Une fois bien réglé, normalement, ta custom view s'adapte correctement à  son contenant.
    A+


    Ou sinon, plus sympa pour l'utilisateur c'est de faire une tite animation de redimensionnement de la fenêtre à  la taille adéquat pour contenir la vue
  • ademoademo Membre
    23:06 modifié #8
    C'est bon... grâce à  une compilation de vos divers solutions ; j'ai réussi à  obtenir ce que je cherchais.
    Merci à  tous.
Connectez-vous ou Inscrivez-vous pour répondre.