私は警告コントローラを使用してcatchブロックにエラーを表示しています。しかし、ユーザーはそれ自体が消える前にそれをほとんど見ることができません。私は間違って何をしていますか?ここに私のコードです。ユーザーが応答する前にUIAlertControllerパネルが消える
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)
})
}
私は警告パネルを却下しません、私はタブバーコントローラを却下します。しかし、私は完了ブロックを完全に削除し、警告パネルはまだ消えます。 –
このコードを 'tabBarController:didSelectViewController:'に置き換えた場合はどうでしょうか?実際にSubmitInspectionViewControllerを表示させる(コードが表示された後に)trueを返すので、警告コントローラが却下されているかどうか疑問に思っています。 – darrenallen7
私は実際にfalseを返しています。私はエラーがあったので、私が望むものです。 submitInspectionViewControllerは決して表示されるべきではありません。ただそこにあるので、このコードが実行されます。その後、タブバーコントローラを閉じます。私はこのコードをdidSelectで一度に持っていましたが、そこではうまくいきませんでした。 –