problème avec une fenêtre de type sheet
Jijo
Membre
Bonjour je voudrai savoir comment faire pour qu'au chargement de la fenêtre principale il y a la fenêtre et la fenêtre sheet. (comme sur la photo 1)
- (void)awakeFromNib
{
[NSApp beginSheet:sheetWindow
modalForWindow:[mainWindow]
modalDelegate:nil
didEndSelector:nil
contextInfo:nil];
[NSApp runModalForWindow:sheetWindow ];
[NSApp endSheet:sheetWindow ];
[sheetWindow orderOut:self];
}
En faisant ceci je n'ai que la fenêtre sheet au chargmement.
Sinon aussi j'ai fait une fenêtre sheet d'upload et je n'arrive pas a afficher des messages différents
a chaque boucle.
int count = [mExportMgr imageCount];
int i;
for(i=0; i<count; i++)
{
NSString * path =[mExportMgr sourcePathAtIndex:i];
NSString * filename =[mExportMgr imageFileNameAtIndex:i];
NSData *imageData = [NSData dataWithContentsOfFile:path];
NSImage *image = [NSImage alloc] initWithData:imageData] autorelease];<br /> <br />[o_image setImage:image];<br /> <br />[label setStringValue:[NSString stringWithFormat:@"Image %d of %d upload binary %@",i + 1, count,filename;
}
(comme l'image2)
Merci
- (void)awakeFromNib
{
[NSApp beginSheet:sheetWindow
modalForWindow:[mainWindow]
modalDelegate:nil
didEndSelector:nil
contextInfo:nil];
[NSApp runModalForWindow:sheetWindow ];
[NSApp endSheet:sheetWindow ];
[sheetWindow orderOut:self];
}
En faisant ceci je n'ai que la fenêtre sheet au chargmement.
Sinon aussi j'ai fait une fenêtre sheet d'upload et je n'arrive pas a afficher des messages différents
a chaque boucle.
int count = [mExportMgr imageCount];
int i;
for(i=0; i<count; i++)
{
NSString * path =[mExportMgr sourcePathAtIndex:i];
NSString * filename =[mExportMgr imageFileNameAtIndex:i];
NSData *imageData = [NSData dataWithContentsOfFile:path];
NSImage *image = [NSImage alloc] initWithData:imageData] autorelease];<br /> <br />[o_image setImage:image];<br /> <br />[label setStringValue:[NSString stringWithFormat:@"Image %d of %d upload binary %@",i + 1, count,filename;
}
(comme l'image2)
Merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ta fenêtre principale doit être affichée avant d'y attacher la sheet.
Ne connaissant ton projet, je suppose :
- soit ta fenêtre principale n'est pas "visible at launch" dans IB,
- le cochage "deferred" dans IB est actif.
Donc, soit tu ajoutes dans awakeFromNib un orderFront: pour ta fenêtre principale avant d'afficher la sheet, soit tu cohes dans IB "visible At launch" et tu décoches "deferred".
Sous OSX, l'affichage se fait à la fin de chaque boucle d'événement.
A la fin de cette boucle, le système recherche toutes les NSViews qui ont été marquées par setNeedsDisplay: et les réaffiche en conséquence.
Ta boucle "for" modifie le label x fois, mais tu ne pourras pas voir ces modifications tant que ta boucle tournera (et donc tant que la boucle d'événement ne sera pas terminée). De plus, à la fin, tu ne verras que le dernier "label" et non les intermédiaires.
Pour résoudre ça rapidement (mais salement), ajoute un [label display]; après la modification du label par setStringValue:. Cela force l'affichage du label hors boucle d'événement.
Mais c'est crade dans la mesure où ta boucle "for" bloque la boucle d'événement de ton appli, et donc fige ton interface : tu ne peux plus rien faire tant que le for n'est pas terminé.
Je te conseille de revoir ça (le transfert des images pouvant se faire dans un thread à part).
La pour le coup ne ferait pas bugger le fenêtre des plugins iPhoto.
Sinon NO comme tu m'as parlé de thread je voulais savoir si je pouvais faire un thread pour mes requêtes xml-rpc afin d'accélerer mon upload.
Merci