私はNavigationController
を持っています。 ThirdViewController
私はいくつかのタスクを実行していますが、失敗すると、UIAlertController
を使用して警告メッセージを表示します。ViewControllerがウィンドウ階層にないときに警告を表示しない
タスクを開始してSecondViewController
に戻ると、エラーメッセージがSecondViewController
に表示され、[OK]をクリックするとすべてがナビゲーションバーの下に黒く表示されます。私はナビゲーションバーのみを残しており、FirstViewController
に再び戻ると、ナビゲーションバー以外は同じ黒い表示になります。
プレゼンテーションウィンドウ階層にないViewControllerの警告が問題を作成します。私がスクリーン上にいないと警告を表示したくない。
ViewControllerをゆっくりとスワイプすると簡単に再現できます。
これを処理する最善の方法は何ですか?あなたは私たちがそこに起こる内容を正確に把握していない任意のコードを共有していなかったので
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)
}
}
もっとアイデアを得るためにコードを投稿してください – Lion