Parcourir des vues non affichées

muqaddarmuqaddar Administrateur
18:34 modifié dans API AppKit #1
Salut,

Dans ma fenêtre des prefs, je voudrais parcourir les vues, toute les vues, même celles qui ne sont pas affichées (par la toolbar).

Soit le code suivant :
<br />	NSView *contentView;<br />	NSControl *controlView;<br />	NSArray *viewItems;<br />	int ix, iy, nbView;<br />	id value;<br />	<br />	//on recupere la vue de la fenetre des prefs<br />	contentView=[_IBO_wndPrefs contentView];<br />	NSLog (@&quot;contentView : %@&quot;, contentView);<br />	<br />	//et un array de subviews qui contient toutes les vues chargées<br />	viewItems=[contentView subviews];<br />	nbView=[viewItems count];<br />	NSLog (@&quot;viewItems : %@&quot;, viewItems);


Or ce code me renvoie :

contentView : <NSView: 0x1623480>
viewItems : ()

Autrement dit, il ne voit pas les vues subviews. Je pensais que contentView était simplement déjà  une des subview à  cette étape. Donc j'ai essayé de récupérer la vue supérieure avec :

contentView=[[_IBO_wndPrefs contentView] superview];


Mais là , ça me renvoie :

contentView : <NSThemeFrame: 0x1621d20>
viewItems : (
    <_NSThemeCloseWidget: 0x1622470>,
    <_NSThemeWidget: 0x16226f0>,
    <_NSThemeWidget: 0x16228f0>,
    (<NSToolbarView: 0x1621f90>: prefsToolbar),
    <_NSThemeWidget: 0x16239a0>,
    <NSView: 0x1622e20>

Autrement dit, ça me renvoie tout ce qu'il y a dans ma fenêtre, alors que je ne veux récupérer que les vues que cette fenêtre peut afficher en cliquant sur les icones de la toolbar. Ces vues doivent pourtant être chargées et récupérables même si elles ne sont pas affichées en même temps, non ?

Réponses

  • 18:34 modifié #2
    Ce qu'il y a dans les subviews ne sont que les vues affichées. C'est normal qu'il n'y ait rien si la fenêtre est vue.

    Maintenant pour parcourir les vues si elles ne sont pas affichées, tu peux les stocker dans un tableau ou un dictionnaire, qui est alors une variable d'instance du controlleur.
  • muqaddarmuqaddar Administrateur
    18:34 modifié #3
    dans 1122372520:

    Ce qu'il y a dans les subviews ne sont que les vues affichées. C'est normal qu'il n'y ait rien si la fenêtre est vue.

    Maintenant pour parcourir les vues si elles ne sont pas affichées, tu peux les stocker dans un tableau ou un dictionnaire, qui est alors une variable d'instance du controlleur.


    C'est exactement ce que j'ai essayé de faire après, sans succès.

    J'ai essayé :

    [viewItems addObject: [_IBO_viewGeneral view]];
    [viewItems addObject: [_IBO_viewGeneral contentView]];

    etc...

    sachant que je ne veux que renvoyer la vue qui correspond à  leur outlet !

    -[NSView contentView]: selector not recognized [self = 0x161d6b0]
  • BruBru Membre
    18:34 modifié #4
    Essaie plutôt ça :
    [tt][viewItems addObject:_IBO_viewGeneral];[/tt]

    .
  • muqaddarmuqaddar Administrateur
    18:34 modifié #5
    dans 1122376646:

    Essaie plutôt ça :
    [tt][viewItems addObject:_IBO_viewGeneral];[/tt]

    .


    Oui, j'avais essayé cette solution plus simple, mais vu que ça plantait direct, j'en ai pas parlé... :(

    theProg has exited due to signal 11 (SIGSEGV).
Connectez-vous ou Inscrivez-vous pour répondre.