Я ищу способ вызова пользовательского предупреждения из нескольких контроллеров. До сих пор я сделал несколько разных попыток без успеха.Как использовать пользовательский UIAlertview в нескольких ViewControllers?
Я создал представление предупреждения с конструктором интерфейса, который отлично работает на одном контроллере представления, но не в другом.
Затем я попытался создать вид предупреждения программным образом, думая, что он может иметь какое-то отношение к выходам, которые не подключены к другому контроллеру. Это также работало на одном контроллере просмотра, а не на другом.
Я сделал отдельный быстрый файл и сделал публичную функцию и тот же результат. С помощью этого последнего метода я могу успешно повторно использовать обычный UIAlertController на нескольких контроллерах представления, но это не совсем то, что я ищу.
С помощью первых двух методов я не получаю компиляции ошибок. Приложение работает нормально, а затем сбой, когда я вызываю предупреждение с другого контроллера.
Заранее благодарим за ввод!
EDIT:
Этот пример работает, когда я положил в другой быстрой файл.
public func showSimpleAlert(title: String, message: String?, presentingController: UIViewController) {
if IS_OS_8_OR_LATER() {
let controller = UIAlertController(title: title, message: message, preferredStyle: .Alert)
controller.addAction(UIAlertAction(title: "OK", style: .Cancel, handler: { (action) -> Void in
}))
presentingController.presentViewController(controller, animated: true, completion: nil)
} else {
let alert = UIAlertView(title: title, message: message, delegate: nil, cancelButtonTitle: "OK")
alert.show()
}
}
Это один я хочу работать.
public func showAlert(oMsg: String, oTitle:String) {
alertView.backgroundColor = UIColor.whiteColor()
alertView.layer.cornerRadius = 25
alertTitleLabel.text = oTitle as String
alertTitleLabel.font = UIFont(name: "Open-Sans-Bold", size: 20)
alertTitleLabel.textColor = UIColor.blackColor()
alertTitleLabel.textAlignment = .Center
alertTitleLabel.numberOfLines = 1
alertTitleLabel.frame = CGRectMake(25, 60, 264, 112)
alertLabel.text = oMsg as String
alertLabel.font = UIFont(name: "Open-Sans", size: 20)
alertLabel.textColor = UIColor.blackColor()
alertLabel.textAlignment = .Center
alertLabel.numberOfLines = 4
alertLabel.frame = CGRectMake(25, 130, 264, 112)
okButton.setTitle("OK", forState: .Normal)
okButton.setTitleColor(UIColor.blueColor(), forState: .Normal)
okButton.frame = CGRectMake(60, 230, 197, 75)
okButton.addTarget(UIViewController.self, action:#selector(LoginViewController.buttonAction(_:)), forControlEvents: .TouchUpInside)
}
Это не очень понятно:. Почему не третий вариант удовлетворит? – Coder1000
не уверен, что происходит с ошибкой. Вы можете попробовать некоторые открытые проекты о представлении предупреждения и настроить его, что хотите. Это лучше, чем построить новый. – truongky
Вы случайно подключили выход делегата к своему пользовательскому виду предупреждения в IB? – sylvanaar