Ich habe eine NavigationController
. In der ThirdViewController
Ich führe einige Aufgabe und bei Ausfall, zeige ich Warnmeldungen mit UIAlertController
.Warnung nicht anzeigen, wenn sich der ViewController nicht in der Fensterhierarchie befindet
Manchmal, wenn ich die Aufgabe starte und zu SecondViewController
zurückkomme, bekomme ich die Fehlermeldung auf SecondViewController
angezeigt und wenn ich auf OK klicke, wird unter der Navigationsleiste alles schwarz. Ich habe nur noch die Navigationsleiste und wenn ich wieder zu FirstViewController
gehe, hat es auch die gleiche schwarze Ansicht außer Navigationsleiste.
Präsentieren Die Warnung des ViewControllers, die nicht in der Fensterhierarchie enthalten ist, erzeugt das Problem. Ich möchte nicht, dass der Alarm angezeigt wird, wenn ich nicht auf dem Bildschirm bin.
Es ist leicht reproduzierbar, wenn ich zurück wische den ViewController langsam.
Was ist der beste Weg, damit umzugehen?
teilen meinen Code,
Button-Aktion in ThirdViewController
func buttonTapped() {
APIManager.sharedManager.getDetails(completion: { (details ,error) -> Void in
guard error == nil else {
Alert.errorMsg(error!.localizedDescription, viewController: self, goBack: false)
return
}
print(details)
}
}
class Alert: NSObject {
/* Error message */
class func errorMsg(message: String, viewController: UIViewController?, goBack: Bool = false) {
let alertView = UIAlertController(title: "Error", message: message, preferredStyle: .Alert)
let action = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default) { (alert: UIAlertAction) -> Void in
if goBack == true && viewController != nil {
viewController!.navigationController?.popToRootViewControllerAnimated(true)
}
}
alertView.addAction(action)
let controller = viewController ?? UIApplication.sharedApplication().keyWindow?.rootViewController
controller!.presentViewController(alertView, animated: true, completion: nil)
}
}
poste deinen Code, um mehr Ideen zu bekommen – Lion