Mi piacerebbe capire un modo in modo che, se l'utente preme il pulsante "Annulla" (che non credo possa essere rimosso) in un ABPeoplePickerNavigationController
, il controller di visualizzazione non lo fa Chiudi, o verrà riaperto automaticamente.Swift: Impedisci ABPeoplePickerNavigationController da Closing
Ad esempio, dato il seguente:
var picker = ABPeoplePickerNavigationController()
picker.peoplePickerDelegate = self
self.presentViewController(picker, animated: true, completion: nil)
mi piacerebbe essere in grado di fare qualcosa di simile:
if (self.presentedViewController != picker && !userContinuedPastPicker) {
//where userContinuedPastPicker is a boolean set to false
//in a delegate method called when the user clicks on an a contact
//(meaning the user didn't press the cancel button but instead clicked on a contact)
//create and present a UIAlertAction informing the user they must select a contact
//present picker again
self.presentViewController(picker, animated: true, completion: nil)
}
Questo non funziona; tuttavia, poiché l'istruzione if
non "attende" fino a quando l'utente non ha premuto il pulsante Annulla o premuto un contatto.
Questo sembra essere quasi esattamente quello di cui ho bisogno! Tuttavia, quando provo a presentare un'altra istanza di un 'ABPPNC' o un' UIAlertController' (come suggerito saggiamente), viene visualizzato un errore che dice: 'Attenzione: tentativo di presentare su la cui vista non è nella gerarchia della finestra! ' –
Randoms
Suppongo che tu stia presentando l'avviso mentre il selettore di persone si sta animando fuori dallo schermo. Prova a eseguire wrapping del presentViewController per l'avviso in un dispatch_after http://stackoverflow.com/questions/24034544/dispatch-after-gcd-in-swift – esthepiking