Как управлять кодом в ViewWillDisappear?
Я работаю в xamarin.ios. Я хочу показать всплывающее окно с подтверждением, когда пользователь нажимает кнопку навигации назад вверху, если пользователь уверен, что хочет вернуться на предыдущий экран.
Я переопределил метод ViewWillDisappear и вызвал там свое всплывающее окно, но экран все еще возвращается к предыдущему экрану, прежде чем пользователь подтвердит его из всплывающего окна.
Всплывающие окна показывают, что за этим экраном происходит переход к предыдущему экрану.
Как я могу управлять этим, чтобы экран не двигался, пока пользователь не подтвердит его из всплывающего окна?
2 ответа
Вы не можете делать то, что вы хотите сделать в viewWillDissappear
, Вместо этого вы можете назначить пользовательское действие кнопке "Назад" следующим образом:
self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Back", style: .Done, target: self, action:#selector(self.displayConfirmation(sender:)))
Реализуйте селектор:
func displayConfirmation(sender: AnyObject) {
let alert = UIAlertController(title: "", message: "Go back?", preferredStyle: .actionSheet)
alert.addAction(UIAlertAction(title: "No", style: UIAlertActionStyle.default, handler: nil))
alert.addAction(UIAlertAction(title: "Yes", style: UIAlertActionStyle.default, handler: { action in
self.navigationController?.popViewController(animated: true)
}))
self.present(alert, animated: true, completion: nil)
}
viewWillDisappear
это функция, которая уже является частью перехода, которую нельзя отменить. Вместо этого вы можете скрыть backBarButton
и вместо этого, предоставьте обычай navigationItem.leftBarButton
который также имеет @IBAction
назначен на это. в @IBAction
Вы реализуете необходимые функции, такие как представление всплывающего окна.