Windows ou Tabs ? et toolbars...

cargocargo Membre
mars 2006 modifié dans API AppKit #1
Dans une app. document-based, j'ai trois tabs avec des vues totalement différentes.
En cherchant à  attribuer une toolbar différente pour chaque tab, je suis en train de douter sur la pertinence de ma structure: ne vaudrait-il pas mieux que j'utilise carrément 3 fenêtres différentes ? Avec une fenêtre qui "remplace" l'autre ? Je ne veux pas 3 fenêtres ouvertes en même temps et je veux que tout cela soit transparent pour l'utilisateur : pas de décalage de la nouvelle fenêtre par rapport à  l'ancienne et un temps de "chargement" très rapide. Et le changement de fenêtre serait contrôlé soit par un changement de sélection dans une tableview soit par un item de toolbar. Donc, tabView ou windows ?...

Réponses

  • aranaudaranaud Membre
    07:51 modifié #2
    Les dimensions des différents vus sont-elles différentes ?
    Si oui, utilise de préférence trois fenêtres.
  • cargocargo Membre
    mars 2006 modifié #3
    Bon en fait je vais reformuler ma question après réflexion. C'est en fait une question de  design guidelines.
    3 tabViewItems, même dimension, contenus différents mais des mêmes principes d'actions de la toolbar sur chaque contenu (add, delete, edit, search, print). 1 tableView présente dans chaque tabViewItem et qui commande l'affichage du tabViewItem.

    Les solutions :
    - 3 toolbars différentes et un delegate qui affiche la toolbar qui correspond au tabViewItem actif : 3 toolbars pour une seule window ça me parait pas très "propre", non ?
    - 1 toolbar et un delegate qui remplace les items de la toolbar en fonction du tabViewItem actif (add Department est remplacé par add Person par ex):pareil, est-ce que c'est conforme aux design guidelines ?
    - 1 toolbar avec des items "génériques" add/delete/edit/search, le "remplacement" se fait directement dans l'IB action par le delegate, avec un choix de méthode basé sur des if ("je suis dans le tabViewItem n° 1") {return "la méthode correspondante"} : ça me parait moins flexible et moins cohérent, si par la suite je veux rajouter une action spécifique à  un tabViewItem donné, j'aurai dans ma toolbar des items génériques et un item uniquement dédié à  un tabViewItem.

    Encore une fois ma question est longue ::), mais la réponse peut être rapide...
    Merci en tous cas à  ceux qui auront le courage et le temps de la lire et d'y répondre. 8)


  • 07:51 modifié #4
    dans 1143705902:

    - 3 toolbars différentes et un delegate qui affiche la toolbar qui correspond au tabViewItem actif : 3 toolbars pour une seule window ça me parait pas très "propre", non ?

    Xcode le fait si tu choisis le layout "All-In-One". Il n'y a pas à  ma connaissance de contre-indication, d'autant plus que le fait d'utiliser des icones différentes permet d'indiquer clairement que le contexte est différent. Je pense que cela se fait peu car il tout simplement peu d'application qui le nécessitent.

    dans 1143705902:

    - 1 toolbar et un delegate qui remplace les items de la toolbar en fonction du tabViewItem actif (add Department est remplacé par add Person par ex):pareil, est-ce que c'est conforme aux design guidelines ?

    Oublie. On ne peut pas demander à  une toolbar de se rafraichir.
  • LeChatNoirLeChatNoir Membre, Modérateur
    07:51 modifié #5
    1 tableView présente dans chaque tabViewItem et qui commande l'affichage du tabViewItem.


    ????

    Alors là , j'ai définitivement du mal à  te suivre...

    Une tableView dans chaque tabviewitem qui commande son propre affichage...
    A quoi ça sert ?
    En gros, si le tabviewitem est affiché, tu peux commander son affichage mais s'il n'est pas affiché, tu peux plus... Pas très utile ton affaire  :)
  • cargocargo Membre
    07:51 modifié #6
    Posté le: Aujourd'hui à  10:26
    Citer ce message
    Citation
    1 tableView présente dans chaque tabViewItem et qui commande l'affichage du tabViewItem.
    ?

    Non c'est une erreur de ma part la tableView est en dehors de la tabView, même si ça pourrait fonctionner aussi en la mettant dans chaque tabViewItem. En fait c'est la selection de la tableView qui contrôle l'affichage (comportement similaire à  itunes par ex).

    Oublie. On ne peut pas demander à  une toolbar de se rafraichir.

    Non mais on peut remplacer un item par un autre en utilisant la méthode qui sert à  customiser la toolbar , non ? Ce n'est pas conseillé de toucher à  cette méthode par contre.
    Apple Doc :
    insertItemWithItemIdentifier:atIndex:
    Inserts the item identified by itemIdentifier at index.

    - (void)insertItemWithItemIdentifier:(NSString *)itemIdentifier atIndex:(int)index

    Discussion
    If the toolbar needs a new instance, it will get it from toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:. Typically, you should not call this method; you should let the user reconfigure the toolbar. See identifier for important information.

    Xcode le fait si tu choisis le layout "All-In-One"

    Tu es sûr qu'il s'agit bien de 3 toolbars différentes ? Parce que si on customise, on a accès à  tous les items. Bien sûr il est possible de mettre un set de customisation en commun aux trois toolbars mais ça me fait douter justement...Et je trouve que le switch est hyper rapide, beaucoup plus rapide que l'affichage d'une toolbar à  l'ouverture de l'app.
    Je vais essayer cette solution, je verrai bien.

    PS : il va bien falloir que je le fasse ce delegate finalement ;)...
  • 07:51 modifié #7
    dans 1143710080:

    Oublie. On ne peut pas demander à  une toolbar de se rafraichir.

    Non mais on peut remplacer un item par un autre en utilisant la méthode qui sert à  customiser la toolbar , non ? Ce n'est pas conseillé de toucher à  cette méthode par contre.

    Non seulement ce n'est pas conseillé, mais c'est surtout beaucoup de chipo comparé à  avoir 3 instances de NSToolbar et de passer de l'une à  l'autre avec -setToolbar:, surtout si en plus tu veux permettre leur personnalisation.

    dans 1143710080:

    Xcode le fait si tu choisis le layout "All-In-One"

    Tu es sûr qu'il s'agit bien de 3 toolbars différentes ?

    C'est bien 3 toolbars différentes. Si tu regardes dans les prefs, elles ont chacune un identifiant différent.
  • cargocargo Membre
    07:51 modifié #8
    J'étais dans le bundle justement, il y a tout une série de templates.
    Mais en fait il suffit de faire le test en customisant : si le nouvel item n'apparaà®t que là  où on l'a déposé c'est qu'il y a plusieurs toolbars logiquement.
    Donc allons-y pour 3 toolbars...Chaud devant chaud...  :)
Connectez-vous ou Inscrivez-vous pour répondre.