Я искал много учебников по UIAlertController. До сих пор способ, которым я нашел, - активировать UIAlertController, связав его с кнопкой или меткой, а затем вызвать IBAction.Как мы создаем и отклоняем UIAlertController без ввода пользователем? (Swift)
Я попытался воспроизвести код, чтобы автоматически вызывать предупреждение при входе пользователя в приложение (я хотел спросить пользователя, хотят ли они пройти через учебник). Тем не менее, я получаю ошибку:
Warning: Attempt to present UIAlertController on MainViewController whose view is not in the window hierarchy!
Затем я попытался добавить UIAlertController к MainViewController через addChildViewController и addSubview. Тем не менее, я получаю ошибку:
Application tried to present modally an active controller
Я понял, что я не могу использовать функцию presentViewController и прокомментировал его.
Отображается UIAlertController, но когда я попытался нажать кнопку отмены или никогда, эта ошибка возникает.
Trying to dismiss UIAlertController with unknown presenter.
Я действительно в тупике. Может ли кто-то поделиться тем, что я делаю неправильно? Огромное спасибо. Вот код.
func displayTutorial() {
alertController = UIAlertController(title: NSLocalizedString("tutorialAlert", comment: ""), message: NSLocalizedString("tutorialMsg", comment: ""), preferredStyle: .ActionSheet)
self.addChildViewController(alertController)
self.view.addSubview(alertController.view)
alertController.didMoveToParentViewController(self)
alertController.view.frame.origin.x = self.view.frame.midX
alertController.view.frame.origin.y = self.view.frame.midY
//alertController.popoverPresentationController?.sourceView = self.view*/
let OkAction = UIAlertAction(title: NSLocalizedString("yesh", comment: ""), style: .Destructive) { (action) in
}
alertController.addAction(OkAction)
let cancelAction = UIAlertAction(title: NSLocalizedString("notNow", comment: ""), style: .Destructive) { (action) in
//println(action)
self.tutorial = 1
self.presentedViewController?.dismissViewControllerAnimated(true, completion: nil)
}
alertController.addAction(cancelAction)
let neverAction = UIAlertAction(title: NSLocalizedString("never", comment: ""), style: .Cancel) { (action) in
self.tutorial = 1
}
alertController.addAction(neverAction)
//self.presentViewController(alertController, animated: false) {}
}