Le gestionnaire d'achèvement n'a jamais appelé NSSavePanel beginWithCompletionHandler

StackOverflow https://stackoverflow.com/questions/5456085

  •  12-11-2019
  •  | 
  •  

Question

Quand j'ouvre un NSSavePanel ou NSOpenPanel exemple avec beginWithCompletionHandler: le gestionnaire n'est jamais appelé.Au lieu de cela, je vois le panneau apparaître pendant une fraction de seconde, avant de disparaître à nouveau sans permettre à l'utilisateur de sélectionner un fichier.Quand j'ouvre le panneau avec runModal ça marche très bien.Voici le code :

NSSavePanel *savePanel = [NSSavePanel savePanel];

//[savePanel runModal]; // Works

[savePanel beginWithCompletionHandler:^(NSInteger result){

    NSLog(@"DONE"); // Never called, dialog disappears right away
}];

Y a-t-il quelque chose qui me manque ici ?

Merci, Marc

Était-ce utile?

La solution

J'ai trouvé le problème :dans le code ci-dessus, l'instance savePanel est automatiquement libérée dès que la méthode environnante se termine.Cela provoque la disparition du panneau.La solution est de conserver la référence du panneau jusqu'à ce que le bloc d'achèvement soit appelé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top