Entlassung von UIAlertController (best-practice)
Bei der Verwendung UIAlertController wie diese:
var alert = UIAlertController(title: "Core Location",
message: "Location Services Disabled!",
preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default,
handler: nil))
self.navigationController.presentViewController(alert, animated: true,
completion: nil)
Bemerkte ich, dass die Entlassung der Alarm-Ansicht wird scheinbar automatisch erledigt.
Sollte nicht die Entlassung eines vorgestellt ViewController erfolgen durch die präsentiert ViewController über einen Delegaten aufrufen?
InformationsquelleAutor Woodstock | 2014-08-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Entlassung ist "eingeschlossen" in der
presentViewController
nennen. Sie brauchen nicht delegieren, weil Sie den Abschluss blockieren. In diesem block setzen, was man normalerweise in der delegate callback, außer der Anruf um die Meldung zu ignorieren.Soweit "best practice" angeht, habe ich festgestellt, dass in vielen APIs, die Apple ersetzt Delegierten Rückrufe mit der Fertigstellung der Blöcke. Apple in der Regel empfiehlt die Verwendung der block-syntax. Ich vermute dies könnte zum Teil, weil es hilft, zu halten die im Zusammenhang mit code-Abschnitte zusammen.
Es muss nicht explizit gemacht. Wenn Sie eine Taste drücken auf der Hut, es wird nun automatisch.
Diese Antwort können Sie Lesen, um zu bedeuten, dass die
completion
Schließung derpresentViewController:animated:completion
Methode wird aufgerufen, wenn die Warnung entlassen. Wenn Sie Lesen, seien Sie gewarnt, dass dies nicht der Fall ist. Wie die docs sagen: "Der completion handler wird aufgerufen, nachdem die viewDidAppear: - Methode aufgerufen wird, die auf die vorgestellten view-controller". das heißt, es hat nichts zu tun mit der EntlassungNein, die
completion
argument dieser Methode ist ein "callback" nach der animation präsentieren den view-controller abgeschlossen ist. Das macht Sinn - ein non-modal-view-controller bleiben könnte, bis auf unbestimmte Zeit. Ich Stimme zu, dass das verwirrend sein könnte, aber beachten Sie, dass die parameter nicht als "Abschluss" sondern "handler", was darauf hinweist, dass es diesen wichtigen Unterschied.In iOS 9 (und wahrscheinlich auch iOS 8 auch), die
completion
block-presentViewController:animated:completion:
ausgeführt wird, nur nach dem UIAlertController den ersten Blick scheint. Wenn Sie einen Rückruf, Wann schließt der Benutzer die Alarm-controller, dann ein UIAlertAction, deren TypUIAlertActionStyleCancel
, und fügen Sie Ihren code in das Objekthandler
. Es wird ausgeführt, wenn der Alarm-controller ist abgetan durch Tippen außerhalb des popover oder Tippen Sie auf die Schaltfläche Abbrechen.InformationsquelleAutor Mundi
Gibt es eine elegante Art und Weise! Schreiben Sie einfach die Aktion oder Funktion innerhalb des Alarm-Controllers Abbruch der Aktion. (hier die action-Stil sollte
.cancel
)Code für Swift 3:
InformationsquelleAutor NSDev