Ich habe eine Option, ein Dokument grundsätzlich in meiner App zu drucken. Jetzt dürfen einige Dokumente nicht gedruckt werden (es sei denn, ein Kriterium ist angegeben). Also benutze ich Delegierte.Zurückgeben eines Bool-Werts von Funktion nach dem Anzeigen von AlertView
Beachten Sie, dass ich eine Mischung aus beiden Objective C
und verwende.
Grundsätzlich meine Druckcode ist wie folgt:
if ([self.delegate respondsToSelector:@selector(shouldPrintDocument)]) {
BOOL shouldPrint = [self.delegate shouldPrintDocument];
NSLog(@"Should Print %d", shouldPrint);
if (shouldPrint){
//We will print here
}
}
Jetzt bei Swift
Seite der Dinge, was ich im Wesentlichen tun müssen, ist mit dem Benutzer bestätigen, wenn sie mit dem Drucken des Dokuments fortfahren möchten. Also benutze ich eine UIAlertController
.
Die Frage ist, wie gebe ich einen Bool-Wert aus dieser Warnmeldung.
func shouldPrintDocument() -> Bool {
let alertController = UIAlertController(title:"Confirm Print",
message: message,
preferredStyle: UIAlertControllerStyle.Alert)
let cancelAction: UIAlertAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: {(action: UIAlertAction) -> Void in
alertController.dismissViewControllerAnimated(true, completion: { _ in })
return false
})
alertController.addAction(cancelAction)
let ok: UIAlertAction = UIAlertAction(title: "Confirm", style: .Default, handler: {(action: UIAlertAction) -> Void in
alertController.dismissViewControllerAnimated(true, completion: { _ in })
//Perform some core data work here, i.e., save a few things and return
return true // This is where the issue comes in
})
alertController.addAction(ok)
self.presentViewController(alertController, animated: true, completion: nil)
}
Sie sollten an Sicherheit grenzender Wahrscheinlichkeit zu tun, dass in einem Verschluss. Ihre Funktion wird nicht darauf warten, dass eine andere Schließung zurückkehrt, ohne blockiert zu werden. Es sollte so bald wie möglich zurückkehren und einen Bool in seine Vollendung führen. – Dare
@Dare Hallo, ja, aber ich bin mir nicht sicher, wie das geht? Könnten Sie mir in die richtige Richtung zeigen? –
Sie können die Aktionsblatt-Delegatfunktion verwenden, von der Sie die Rückgabewerte abrufen können. –