Windows ou Tabs ? et toolbars...
cargo
Membre
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 ?...
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 ?...
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Si oui, utilise de préférence trois fenêtres.
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)
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.
Oublie. On ne peut pas demander à une toolbar de se rafraichir.
????
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
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).
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.
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 ...
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.
C'est bien 3 toolbars différentes. Si tu regardes dans les prefs, elles ont chacune un identifiant différent.
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...