#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() } }) } }) }
Комментарии:
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 Ответ, который я дал, должен быть скорректирован в соответствии с вашими потребностями и не использоваться как есть. Похоже, что вы, возможно, пытаетесь получить доступ к оповещению за пределами области, в которой оно создано. Не могли бы вы, пожалуйста, поделиться точным фрагментом кода, который вы пробовали?