class AVC: UIViewController {
override func viewDidLoad(){
let alert = UIAlertController(title: nil, message: "Please wait...", preferredStyle: .alert)
let loadingIndicator = UIActivityIndicatorView(frame: CGRect(x: 10, y: 5, width: 50, height: 50))
loadingIndicator.hidesWhenStopped = true
loadingIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.gray
loadingIndicator.startAnimating();
alert.view.addSubview(loadingIndicator)
viewController.present(alert, animated: true, completion: nil)
self.a()
}
func a(){
ZZZ.remove(for: self)
}
}
class ZZZ {
func remove(for viewController: UIViewController){
viewController.dismiss(animated: false, completion: nil)
//Why won't the alert created in AVC be dismissed from here?
}
}
Привет,
У меня есть контроллер просмотра AVC, который создает предупреждение и индикатор загрузки.
Я хочу отклонить это предупреждение из другого быстрого файла под названием ZZZ, используя функцию удаления ZZZ.
Однако предупреждение не отклоняется от ZZZ, хотя мой код явно просит об этом.
Как мне это исправить?
Спасибо
но я сделал, передав self в удалении?
Я в AVC не оповещается
звоните ZZZ.remove(for: alert). - Отвечать
где вы создаете объект ZZZ?
попробуйте func a(vc:UIViewController) и вызовите a(vc: alert) и внутри ZZZ.remove(for: vc)
Neel bhaai !! : D Мы тоже здесь!
@iPeter ответ де пир
На вопрос уже дан ответ. : D





В настоящее время вы закрываете viewcontroller, а не alert. Вызов
alert.dismiss(animated: false, completion: nil)
func a() {
ZZZ().remove(for: alert)
}
@Helosy Попробуйте ZZZ() вместо ZZZ
Здесь общий пользовательский класс для отображения предупреждений
class Shared: NSObject {
func waitAlert() -> UIAlertController {
let alert = UIAlertController(title: nil, message: "Please wait...", preferredStyle: .alert)
alert.view.tintColor = UIColor.black
let loadingIndicator: UIActivityIndicatorView = UIActivityIndicatorView(frame: CGRect(x: 10, y: 5, width: 50, height: 50)) as UIActivityIndicatorView
loadingIndicator.hidesWhenStopped = true
loadingIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.gray
loadingIndicator.startAnimating();
alert.view.addSubview(loadingIndicator)
return alert
}
}
Итак, в вашем viewcontroller вы можете для отображения предупреждения
let alert = Shared().waitAlert()
present(alert, animated: true, completion: {
alert.dismiss(animated: true, completion: {
//do your code
})
})
вы пытаетесь удалить AVC в соответствии с вашим кодом, тогда почему предупреждение должно быть отклонено. Передайте ссылку на контроллер предупреждений, чтобы удалить его