Ich habe ein UIAlertController
mit einem Textfeld, das Benutzern ermöglicht, einen Titel einzugeben, um eine Datei zu benennen, bevor die Daten an den Server gesendet werden. Das Back-End kann die Datei jedoch aus verschiedenen Gründen ablehnen, und es muss ein Fehler angezeigt werden. Wie kann ich den Fehler anzeigen, den ich vom Server im selben Alert-Controller erhalten habe, wo ich den Dateinamen eingegeben habe?Fehlerbehandlung mit UIAlertController
class FileController: UIViewController
{
var alertController: UIAlertController?
func savePressed()
{
createAlert()
}
func createAlert()
{
self.alertController = UIAlertController(title: "Save", message: "Name your file.", preferredStyle: .Alert)
let saveAsPublicAction = UIAlertAction(title: "Make Public", style: .Default) { (_) in
let fileTitle = self.alertController!.textFields![0] as UITextField
if fileTitle.text != ""
{
self.initiateSave(fileTitle.text!, share: true)
}
}
let saveAsPrivateAction = UIAlertAction(title: "Make Private", style: .Default) { (_) in
let fileTitle = self.alertController!.textFields![0] as UITextField
if fileTitle.text != ""
{
self.initiateSave(fileTitle.text!, share: false)
}
}
let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) { (_) in }
self.alertController!.addTextFieldWithConfigurationHandler { (textField) in
NSNotificationCenter.defaultCenter().addObserverForName(UITextFieldTextDidChangeNotification, object: textField, queue: NSOperationQueue.mainQueue()) { (notification) in
saveAsPrivateAction.enabled = textField.text != ""
saveAsPublicAction.enabled = textField.text != ""
}
}
self.alertController!.addAction(saveAsPublicAction)
self.alertController!.addAction(saveAsPrivateAction)
self.alertController!.addAction(cancelAction)
self.presentViewController(self.alertController!, animated: true, completion: nil)
}
}
func initiateSave(title:String?, share: Bool?)
{
//package file
initiatePost()
}
func initiatePost()
{
//Send file data to server. Receive any errors and handle
}
Das ist was ich mache. Ich frage mich, wie ich die Ergebnisse im selben Alarm-Controller anzeigen kann, wo ich den Dateinamen eingegeben habe. – Brosef
@Brosef ok Ich sehe, was du meinst, dafür musst du 'self.presentViewController' erneut aufrufen – meda
So erhalte ich den Fehler in der 'initiatePost'-Funktion und der Alarm-Controller ist immer noch vorhanden, wenn der Fehler empfangen wird. Wie zeige ich den Fehler im Alert-Controller an? – Brosef