Я использую контроллер предупреждений для отображения ошибки в блоке 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:' вместо этого. Мне просто интересно, отклоняется ли диспетчер предупреждений, потому что вы возвращаете true (после отображения кода), который на самом деле вызывает отображение объекта SubmitInspectionViewController. – darrenallen7
Я на самом деле возвращаю ложь. Это то, что я хочу, потому что произошла ошибка. Параметр submitInspectionViewController никогда не должен отображаться, он только там, поэтому этот код будет запущен, а затем я отклоню контроллер панели вкладок. У меня был этот код в didSelect за один раз, и он тоже не работал. –