Вам необходимо передать ссылку на подкласс UIViewController
в свой класс LoginModel, чтобы представить UIAlertViewController
в LoginViewController
. Вы должны вызвать show alert, как только на экране появится представление LoginViewController, переместить вызов в метод ViewWillApear или viewDidApear
final class LoginViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidApear(animated)
LoginModel().show_alert(on: self)
}
}
final class LoginModel {
public func show_alert(on vc: UIViewController) {
let alert = UIAlertController(title: "Title", message: "Some Message",
preferredStyle: UIAlertControllerStyle.alert)
alert.addAction(UIAlertAction(title: "Ok", style: .default, handler:
nil))
vc.present(alert, animated: true, completion: nil)
}
}
в идеале не следует создавать методы, связанные с пользовательским интерфейсом, в классах модели, они должны быть включены в классы UIViewController / UIView или их методы расширения. Классы моделей не должны ничего знать о пользовательском интерфейсе . Таким образом, вы можете легко создать простой метод расширения в UIViewController и вызвать метод showAlert из viewController.
extension UIViewController {
func showAlert(_ title: String = "Alert", message: String) {
let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Ok", style: .default, handler:
nil))
present(alert, animated: true, completion: nil)
}
}
вы можете вызывать этот метод из UIViewController как
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
showAlert(message: "This is alert message")
}