Ich würde gerne einen Weg, so dass, wenn der Benutzer die Schaltfläche "Abbrechen" (die ich glaube nicht, kann entfernt werden) in einem ABPeoplePickerNavigationController
drücken, der View-Controller entweder doesn nicht schließen oder wird automatisch wieder geöffnet.Swift: Verhindern ABPeoplePickerNavigationController
Zum Beispiel gegeben wie folgt zusammen:
var picker = ABPeoplePickerNavigationController()
picker.peoplePickerDelegate = self
self.presentViewController(picker, animated: true, completion: nil)
Ich möchte in der Lage sein, etwas zu tun wie:
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)
}
Dies funktioniert nicht; Allerdings wird die if
-Anweisung nicht "warten", bis der Benutzer die Abbrechen-Schaltfläche gedrückt oder einen Kontakt gedrückt hat.
Das scheint fast genau das zu sein, was ich brauche! Wenn ich jedoch versuche, eine weitere Instanz eines "ABPPNC" oder "UIAlertControllers" zu präsentieren (wie Sie es so richtig vorgeschlagen haben), bekomme ich eine Fehlermeldung: 'Warnung: Versuch auf dessen Ansicht sich nicht in der Fensterhierarchie befindet! ' –
Randoms
Meine Vermutung ist, dass Sie den Alarm anzeigen, während der Personenwähler vom Bildschirm animiert wird. Versuchen Sie, den presentViewController für die Warnung in einem Dispatch_after um http://stackoverflow.com/questions/24034544/dispatch-after-gcd-in-swift zu verpacken – esthepiking