Как мне на самом деле удалить UIAlertView из представления — Текст, выполненный поверх предыдущей ошибки с текстом

#swift #xcode #swift5 #uialertview

#быстрый #xcode #swift5 #uialertview

Вопрос:

Всем привет, у меня есть ошибка, которую я не могу решить — я копаюсь в Интернете и не могу найти никакого решения. У меня есть экран viewcontroller с 6 кнопками на нем. Я хочу показывать пользователю UIAlertView с текстом описания в любое время при нажатии на одну из этих кнопок. Проблема в том, что в первой кнопке я правильно понял текст, но проблема начинается со второй кнопки и так далее. В новом представлении UIAlertView новый текст описания отображается вместе со старым текстом, поэтому новый текст нельзя прочитать.

Из отладчика я обнаружил, что старые UIAlertView есть, но просто не отображаются на главном экране.

Как правильно удалить его из контроллера просмотра?

Это моя функция увольнения:

 @objc func dismissAlert() {  guard let targetView = mytargetView else {  return  }  UIView.animate(withDuration: 0.25, animations: {self.alertView.frame = CGRect(x: 40, y: targetView.frame.size.height, width: targetView.frame.size.width-80, height: 300)}, completion: {done in  if done {  UIView.animate(withDuration: 0.25, animations: {  self.backgroundView.alpha = 0  }, completion: { done in  if done {  self.alertView.removeFromSuperview()  self.backgroundView.removeFromSuperview()  }  })  }  }) }  

Предыдущие UIAlerts все еще находятся в фоновом режиме

Комментарии:

1. Предупреждающие представления — это просто то, что вы представляете модально и отвергаете. Это не похоже на то, что вы пытаетесь сделать. Так что, может быть, начнем с простого. Представьте один — и я имею в виду present — и отклоните его, используя «отклонить». Затем попробуйте сделать второй шаг, что бы это ни было. Я предполагаю, что вам нужно что-то совсем другое, чем оповещение с глубиной в восемь(?) просмотров.

2. Привет, спасибо за ваш комментарий. Мое представление-это всего лишь базовое представление с шестью кнопками, цель которого состоит в том, чтобы просто отобразить некоторую информацию о каждой кнопке и о том, что она делает. Но каждый раз, когда я нажимаю «отклонить» и открываю новый файл, новая информация выходит вместе со старой информацией сразу за ней, так что это текст поверх текста и так далее.

Ответ №1:

Этот dismissAlert метод не является правильным способом отклонения представления предупреждения. Вы можете просто вызвать dismiss метод в любом представлении предупреждения, чтобы правильно его отклонить.

 let alert = UIAlertController(title: "Some Title", message: "Some message", preferredStyle: .alert)  // Presenting an alert present(alert, animated: true, completion: nil)  // Dismissing an alert alert.dismiss(animated: true, completion: nil)  

Комментарии:

1. Дорогой Малик, спасибо тебе за твой ответ. Я попробовал ваш код, но xcode его не принимает. после объявления «разрешить оповещение» xcode не знает кода для отклонения предупреждения.отклонить() или представить() он выдает как ошибку: «Ожидаемое ключевое слово» функция «в объявлении метода экземпляра» Я пытался найти другие решения, но пока ничего. У вас есть еще какие-нибудь предложения? С Наилучшими пожеланиями, Идо

2. @Ido Ответ, который я дал, должен быть скорректирован в соответствии с вашими потребностями и не использоваться как есть. Похоже, что вы, возможно, пытаетесь получить доступ к оповещению за пределами области, в которой оно создано. Не могли бы вы, пожалуйста, поделиться точным фрагментом кода, который вы пробовали?