Il gestore di completamento non ha mai richiesto NSSavePanel BegindwithCompletionHandler

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

  •  12-11-2019
  •  | 
  •  

Domanda

Quando apro un NSSavePanel o NSOpenPanel istanza con beginWithCompletionHandler: Il gestore non viene mai chiamato. Invece vedo il pannello apparire per una frazione di secondo, prima che scompaia di nuovo senza lasciare che l'utente selezionasse un file. Quando apro il pannello con runModal Funziona bene. Qui il codice:

NSSavePanel *savePanel = [NSSavePanel savePanel];

//[savePanel runModal]; // Works

[savePanel beginWithCompletionHandler:^(NSInteger result){

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

C'è qualcosa che mi manca qui?

Grazie, Mark

È stato utile?

Soluzione

Trovato il problema: nel codice sopra, l'istanza di SavePanel viene autolerizzata non appena il metodo circostante termina. Questo fa scomparire il pannello. La soluzione è quella di trattenere il riferimento del pannello fino a quando non viene chiamato il blocco di completamento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top