Quand remplir sa sheet ?

muqaddarmuqaddar Administrateur
12:47 modifié dans API AppKit #1
Yop,

Je ne vois pas à  quel moment mettre à  jour le contenu d'objets dans une feuille.
Par exemple, si je charge une feuille avec NSApp beginSheet... puis que je remplis ses objets dans la même méthode (popups, fields...etc), ça ne fait rien au niveau du contenu. Si je la ferme (la feuille hein...) et que je la réouvre, c'est bon, les objets sont bien remplis.

Je pourrais remplir tous ces objets dans l'init de ma classe (pas de pb), mais si je ne me sers pas de la sheet, je vois pas l'intérêt de bouffer du processeur pour cela non ? On va pas remplir des objets si on s'en sert pas.

Vous faites comment vous ?

EX :

- (IBAction)openNewSheet:(id)sender<br />{<br />	[NSApp beginSheet:newWindow <br />					modalForWindow:mainWindow <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; modalDelegate:nil<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; didEndSelector:nil<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; contextInfo:nil];<br />	[NSApp runModalForWindow:newWindow];<br />	[NSApp endSheet:newWindow];<br />	[newWindow orderOut:self];<br />	<br />	//charger les pays<br />	NSMutableArray* paysArray = [NSMutableArray arrayWithObjects:@&quot;toto&quot;, @&quot;titi&quot;, @&quot;tutu&quot;];<br />	[paysAddPopup addItemsWithTitles: paysArray];<br />}<br />


Ou alors, c'est parce que j'utilise pas une variable d'instance ?

Réponses

  • muqaddarmuqaddar Administrateur
    12:47 modifié #2
    Ouh là , j'ai dit des conneries.

    Il semble que le mieux soit de les remplir dans le awakeFromNib (et pas ds le init suis-je bête !!!).

    En revanche, pourquoi on ne pourrait pas les remplir au moment où on ouvre la feuille ?
  • BruBru Membre
    novembre 2004 modifié #3
    [NSApp beginSheet...] bien sûr, ne charge pas une sheet, mais l'affiche !
    Donc, c'est avant cette méthode qu'il faut initialiser le contenu de la feuille.

    Rappelons que tout ce qui est dans un nib est chargé entièrement en mémoire lorsque le nib est lui-même chargé (chargement automatique pour le mainMenu.nib lors du démarrage de l'appli, ou via les méthodes load de NSBundle).

    On peut donc à  tout moment utiliser les objets porvenant d'un nib chargé, même si ces derniers ne sont pas forcément visibles à  l'écran.

    .
  • muqaddarmuqaddar Administrateur
    12:47 modifié #4
    Avant cette méthode, c'est à  dire ?
    Forcément dans awakeFromNib ?
  • BruBru Membre
    12:47 modifié #5
    Ca dépend.

    - Dans le awakeFromNib du contrôleur auquel est attachée la sheet pour des données ne nécessitant qu'une seule initialisation. Dans ce cas, les objets de la feuille ne seront initialisés qu'une seule fois.

    - Avant l'appel à  [NSApp beginSheet...], c'est à  dire à  partir de la première ligne dans la méthode - (IBAction)openNewSheet:(id)sender, pour les données nécessitant une mise à  jour en fonction de ce que l'utilisateur a précédemment fait dans l'appli juste avant l'action qui ouvre la feuille. Dans ce cas les objets seront mis à  jour à  chaque fois que l'utilisateur va ouvrir la feuille.

    Bien sûr, ça peut être un mix des 2.

    .
  • muqaddarmuqaddar Administrateur
    12:47 modifié #6
    Super Bru !
    Merci de ces conseils.
    La plupart de ces données ne sont mises à  jour qu'une fois en fait.
Connectez-vous ou Inscrivez-vous pour répondre.