Как управлять кодом в 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 Вы реализуете необходимые функции, такие как представление всплывающего окна.

Другие вопросы по тегам