我在选项卡 View 中有一个表单;我将任何字段的表单标记为已更改,如果表单是脏的(代替“保存”按钮),我想弹出一个带有“保存”/“取消”的 ActionSheet。在用户响应正在处理的 ActionSheet 之前,有什么方法可以阻止 View 消失(或从 View 堆栈中删除)?
最佳答案
几个想法:
值得注意的是,Apple 的 Human Interface Guidelines (HIG)明确反对这种做法。他们建议应用程序应该“只在必要时要求人们保存”,因为人们“应该相信他们的作品总是被保存,除非他们明确取消或删除它。”也许在您的情况下,拥有此功能很重要,但通常不鼓励这样做。
另一种方法是,如果您想让用户有机会恢复到旧设置,那就是提供一个“撤消”按钮,这样,您就尊重 HIG 并有效地自动保存,但您也给了用户在确实需要时明确恢复到先前的值。
正如其他人指出的那样,在
viewWillDisappear
上提示保存或丢弃的概念不太行得通。这在逻辑上为时已晚。viewWillDisappear
可能因太多原因而被调用,其中许多原因不在您的控制之下,无法及时返回到该方法、引入新的用户界面元素等并不是一件容易的事。如果您真的非常需要“保存”与“取消”用户界面,那么这更适合模态界面(或推送一个您必须弹出才能返回的新 View Controller )你的标签栏 View Controller )带有保存和取消按钮而不是标签栏界面。例如。您的标签栏 View 可以显示当前值,您点击“编辑”按钮,它会推送带有保存和取消按钮的新 View 。我们对您的应用了解不多,无法就您的情况提出这是否合乎逻辑的建议。 (另一种方法,请参阅 enabling edit mode in view controller。)
关于ios 忽略 viewWillDisappear,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10771833/