Mécanisme d'affiche d'une NSTabView

UniXUniX Membre
03:07 modifié dans API AppKit #1
Salut.

J'ai une NSTableView dans une fenêtre. Je cherche à  afficher des childWindows sur cette fenêtre, mais seulement lorsqu'un certain tabViewItem est affiché.

J'ai fait ceci :
- (void)tabView:(NSTabView *)tabView didSelectTabViewItem:(NSTabViewItem *)tabViewItem<br />{<br />	if([onglet indexOfTabViewItem:tabViewItem] == 1 &amp;&amp; tabView == onglet)<br />	{<br />		// afficher mes childs<br />	}<br />	else<br />	{<br />		// ne pas les afficher<br />	}<br />}<br />


Le problème, c'est que mes childs sont affichées légèrement avant le tabViewItem. En fait l'affichage des childs est déclenché puisque la tabView vient de changer d'onglet, mais le nouvel onglet n'a pas encore eu le temps de s'afficher.
La latence est faible, environ 0,5 secondes, mais je voudrais savoir quelle piste il faudrait que je suive pour tenter d'être proche de zéro.

N'existe t-il pas un delegate qui m'indiquerais que la vue du tabViewItem a fini son affichage ?

Réponses

  • LeChatNoirLeChatNoir Membre, Modérateur
    03:07 modifié #2
    Hello,
    T'as qu'à  faire un performSelector:withObject:afterDelay: non ?
    a+
  • ClicCoolClicCool Membre
    03:07 modifié #3
    Bonjour,

    C'est sur qu'un performSelector...afterDelay doit résoudre le pb.
    Mais d'un autre côté:
    - ça lance un timer et je trouve que l'usage des timer devrait être limité aux strict nécessaire.
    - la synchronisation avec la TabView est alors aproximative et même variable dans ces cas.

    C'est donc un "work around" efficace certe mais pas forcément très propre.



    Y'a quoi dans ta TabView ?
    Y'aurait pas moyen qu'un des éléments inclus du tabViewItem appele tes childWindows quand il se redessine  par exemple ?
  • UniXUniX Membre
    03:07 modifié #4
    Ben en fait, j'ai déjà  placé un performSelector pour améliorer un peu le truc.
    C'est vrai que c'est mieux, mais comme le dit ClicCool, la synchro est approximative. Deuxième inconvénient, mes tabViewItems sont très chargés, et suivant la rapidité de l'ordinateur qui l'exécute, le délai d'affichage est plus ou moins long.

    Je vais tester ton idée ClicCool. J'ai une vue qui se dessinne dans le tabViewItem, je vais essayer de placer l'affichage des childs dedans pour voir.
  • ClicCoolClicCool Membre
    03:07 modifié #5
    Tiens nous au courant UniX.
  • UniXUniX Membre
    03:07 modifié #6
    Ecoutes, c'est nickel. Il faut que je fasse le test sur un Mac plus lent, mais sur un rapide, c'est tip top ....! :)

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