J'écris un panneau de préférences pour contrôler un script que j'ai créé, et je veux montrer une feuille au premier lancement afin que l'utilisateur puisse dire au panneau où il a installé le script. La feuille semble bien, le problème est qu'il apparaît juste après que vous cliquiez sur le bouton pour mon volet. Cela provoque des erreurs de segmentation des préférences système immédiatement. J'utilise la commande pour afficher la feuille à l'intérieur de awakeFromNib, qui peut avoir quelque chose à voir avec ça, mais je ne peux rien faire à l'intérieur de mainViewDidLoad pour l'exécuter. Des idées sur ce que je peux faire?Attendez jusqu'à ce que le panneau de préférences soit complètement visible pour montrer la feuille?
code:
- (void) awakeFromNib
{
NSLog(@"hi");
[sheetController setParentWindow:[NSApp mainWindow]];
BashScript *script = [[BashScript alloc] init];
if (![script loadScriptFromLocation:[self retrieveScriptLocation]])
{
NSLog(@"Error loading script.");
}
else {
[advancedEditor setString:[script getScript]];
}
}
- (NSString*) retrieveScriptLocation
{
NSUserDefaults *preferences = [[NSUserDefaults standardUserDefaults] retain];
NSString *location = [preferences stringForKey:@"scriptLocation"];
if (location != nil)
{
return location;
}
else
{
return [self askForScript];
}
}
- (NSString*) askForScript
{
[sheetController openSheet:nil];
}
EDIT: Voici la trace de la pile de l'accident: http://files.spherecat1.com/prefpanestacktrace.txt
Etes-vous sûr que la violation de segmentation est liée à la feuille? Quelle est la trace de la pile? (Veuillez le modifier dans votre question ou utilisez un site pastebin.) –
De même, vous ne devriez pas enregistrer cette préférence dans les préférences pour les Préférences Système; vous devriez les enregistrer sous votre propre domaine. Ainsi, dans un prefpane, vous devriez utiliser CFPreferences, pas NSUserDefaults. –
Très bien, je vais le provoquer à nouveau et poster la pile. En outre, merci pour le heads-up sur la chose CFPreferences, je n'ai pas cela sur le fait que les préférences du système est l'application actuelle pendant que cela fonctionne. – vilhalmer