TabView : ajout d'onglets identiques au premier

LeChatNoirLeChatNoir Membre, Modérateur
09:45 modifié dans API AppKit #1
Salut,

J'essaye d'implémenter une fenêtre avec une NSTabView.

Au départ, il n'y a qu'un seul NSTabViewItem que j'ai créé dans IB avec des contrôles.

Et je veux pouvoir ajouter un "Tab" avec les mêmes contrôles, autant de fois que voulu par une action utilisateur (par exemple un click utilisateur sur un bouton prévu pour ça).

J'ai essayé avec une NSView que j'affecte au tab item mais tous les tab la partage alors (donc si je remplis un champ dans un tab, il se retrouve à  la même valeur dans tous les autres).

J'ai essayé en mettant directos mes controles dans mon premier tab sous IB et en repiquant la "view" de cet item. Même topo.

Bref, j'ai l'impression qu'il va falloir positionner mes contrôles programmatiquement :-(
Y a pas un autre moyen ? N'y a t il pas moyen de faire une copie d'une NSView ?

Et ensuite, comment je vais faire pour mes outlets ?

Ca m'a l'air compliqué tout ça...

Réponses

  • fouffouf Membre
    09:45 modifié #2
    J'ai eu exactement le même problème hier pour faire un controlleur et j'ai trouvé un moyen mais que je trouve très très mais très crade. Tu fais un nouveau nib pour la vue, un controller pour la vue (qui est le file's owner du nib et qui comportera les outlets), et une sorte de controller de controller qui va initialiser les nibs et charger les vues dans la NSTabView.
    Ce que je peux te dire, c'est que ca marche, mais que ca doit consommer une quantité de mémoire monstre (je n'ai pas regardé).

    Bon courage ;)
  • LeChatNoirLeChatNoir Membre, Modérateur
    09:45 modifié #3
    Ah oui, j'avais pensé à  cette solution mais je m'étais dit que c'était trop "crade"  :)

    Mais bon je ne me suis pas lancé dans le doute... Mais si ça marche et qu'on ne me propose pas mieux, je vais peut être partir là  dessus...
    Ca doit pas être plus gourmand en mémoire que d'instancier et positionner les contrôles un à  un...
  • BruBru Membre
    09:45 modifié #4
    dans 1140027959:

    J'ai eu exactement le même problème hier pour faire un controlleur et j'ai trouvé un moyen mais que je trouve très très mais très crade. Tu fais un nouveau nib pour la vue, un controller pour la vue (qui est le file's owner du nib et qui comportera les outlets), et une sorte de controller de controller qui va initialiser les nibs et charger les vues dans la NSTabView.


    Cette solution n'est pas crade.
    C'est même ce que je préconise moi aussi.

    Quant à  la mémoire... C'est au Chat Noir de se poser la question : puisque je duplique mes vues d'onglet, est ce que je duplique la mémoire utilisée pour chaque objet composant ledit onglet ?

    D'ailleurs, je ne comprends même pas l'expression
    dans 1140027959:
    mais que ca doit consommer une quantité de mémoire monstre (je n'ai pas regardé).

    sachant que ce qui est dupliqué ne sont que des instances peu gourmandes en mémoire (une malheureuse instance d'un contrôlleur et quelques NSViews par onglet).

    Par contre, esthétiquement parlant, ça me choquerait de voir un NSTabView (qui par définition est plutôt un contrôle statique pour moi) dont le nombre d'onglet est variable.

    .
  • AliGatorAliGator Membre, Modérateur
    09:45 modifié #5
    Ca dépend comment sont faits les onglets.

    Si c'est du "Safari-like" par exemple...
    Et pas des onglets "à  la OSX" qui en effet eux serait choquant de voir créés à  la volée je trouve car ce n'est pas dans ce genre de cas qu'ils sont utilisés.
    Mais s'il fait lui-même ses onglets, selon l'usage souhaité, ça peut très bien ne pas choquer :)
  • LeChatNoirLeChatNoir Membre, Modérateur
    février 2006 modifié #6
    T'as tout compris Ali.
    Je l'avais pas précisé mais oui, c'est ça, ce sont des onglets à  la Safari.
    Sauf que Safari, Shiira et compagnie, ce sont des browser donc ils n'ont qu'une WebView à  mettre dedans.

    Moi, c'est un client FTP donc j'ai plein de contrôles Cocoa à  mettre dedans.

    Et j'avais déduis la même chose que Bru car j'ai trouvé un exemple dans les exemples d'Apple : Multiple Nib TabView.

    Exactement ce qu'il me fallait et ça "officialise" que la chose n'est pas crade  ::)

    Eh non Fouf, tu n'es pas crade  ;)
  • AliGatorAliGator Membre, Modérateur
    09:45 modifié #7
    dans 1140106110:

    Eh non Fouf, tu n'es pas crade  ;)
    Ca ça reste à  prouver  :) ;D
  • BruBru Membre
    09:45 modifié #8
    dans 1140103360:

    Ca dépend comment sont faits les onglets.

    Si c'est du "Safari-like" par exemple...
    Et pas des onglets "à  la OSX" qui en effet eux serait choquant de voir créés à  la volée je trouve car ce n'est pas dans ce genre de cas qu'ils sont utilisés.
    Mais s'il fait lui-même ses onglets, selon l'usage souhaité, ça peut très bien ne pas choquer :)


    HORS SUJET : j'ai bien précisé NSTabView dans mon post.

    Dans Safari, même si on parle d'onglet, la chose est complètement différente :
    - cadrage à  gauche des "boutons-onglet",
    - pas de liaison "visuelle" comme une bordure reliant les onglets aux vues.

    L'effet visuel est donc différent.

    .
  • fouffouf Membre
    09:45 modifié #9
    dans 1140111781:

    dans 1140106110:

    Eh non Fouf, tu n'es pas crade  ;)
    Ca ça reste à  prouver  :) ;D


    Bah c'est facile :P :(renaud):
Connectez-vous ou Inscrivez-vous pour répondre.