Ich verwende den Alert-Controller, um einen Fehler im catch-Block anzuzeigen. Der Benutzer kann es jedoch kaum sehen, bevor es von selbst verschwindet. Was mache ich falsch? Hier ist mein Code.UIAlertController-Panel wird ausgeblendet, bevor der Benutzer antworten kann
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
if viewController is CancelInspectionViewController {
persistentContainer.viewContext.rollback()
self.dismiss(animated: true, completion: nil)
return false
} else if viewController is SubmitInspectionViewController {
do {
try persistentContainer.viewContext.save()
self.dismiss(animated: true, completion: nil)
} catch {
_alertController = UIAlertController(title: "Error Saving", message: error.localizedDescription, preferredStyle: .alert)
let defaultAction = UIAlertAction(title: "OK", style: .default, handler: nil)
_alertController.addAction(defaultAction)
present(_alertController, animated:true, completion: {
self.dismiss(animated: true, completion: nil)
})
}
Ich verwarne nicht die Alarmanzeige, ich verwerfe den Tab-Leiste-Controller. Ich habe den Completion-Block jedoch vollständig entfernt und das Alarm-Panel verschwindet immer noch. –
Was ist, wenn Sie diesen Code in 'tabBarController: didSelectViewController:' verschoben haben. Ich frage mich nur, ob der Alert-Controller wird entlassen, weil Sie wahr (nach dem Code angezeigt), die dann tatsächlich die SubmitInspectionViewController angezeigt wird. – darrenallen7
Ich komme tatsächlich falsch zurück. Was ich will, weil es einen Fehler gab. Der submitInspectionViewController sollte nie angezeigt werden, es ist nur dort, so dass dieser Code ausgeführt wird, dann verwerfe ich den Tab-Leiste-Controller. Ich hatte diesen Code in didSelect auf einmal und es funktionierte dort auch nicht. –