我在 xamarin.ios 工作。当用户单击顶部的后退导航按钮时,我想显示一个确认弹出窗口,如果用户确定他想返回上一个屏幕。
我重写了 ViewWillDisappear 方法并在那里调用了我的弹出窗口,但在用户从弹出窗口确认之前,屏幕仍然返回到上一个屏幕。
弹出显示和该屏幕后面的移动到上一个屏幕。
我如何管理它以使屏幕在用户从弹出窗口中确认之前无法移动?
我在 xamarin.ios 工作。当用户单击顶部的后退导航按钮时,我想显示一个确认弹出窗口,如果用户确定他想返回上一个屏幕。
我重写了 ViewWillDisappear 方法并在那里调用了我的弹出窗口,但在用户从弹出窗口确认之前,屏幕仍然返回到上一个屏幕。
弹出显示和该屏幕后面的移动到上一个屏幕。
我如何管理它以使屏幕在用户从弹出窗口中确认之前无法移动?
你不能做你想做的事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
您实现所需的功能,例如呈现弹出窗口。