我在选项卡式视图上有一个表单;我将表单标记为脏的,而任何字段都已更改,如果表单是脏的,我想用“保存” /“取消”弹出一个ActionSheet(代替“保存”按钮)。在用户响应要处理的ActionSheet之前,是否有任何方法可以阻止视图消失(或从视图堆栈中删除视图)?
最佳答案
一些想法:
值得注意的是,Apple的Human Interface Guidelines(HIG)明确阻止了这种做法。他们建议应用程序应该“要求人们仅在必要时进行保存”,因为人们“应该确信除非明确取消或删除他们的工作,否则他们的工作始终会得到保留”。也许就您而言,拥有此功能很重要,但通常不建议这样做。
另一种选择是,如果要给用户提供恢复到旧设置的机会,请提供一个“撤消”按钮,这样,您可以尊重HIG并有效地自动保存,但是还可以使用户明确恢复到以前的值如果他们真的需要。
正如其他人指出的那样,提示在viewWillDisappear
上进行保存或丢弃的概念并不起作用。从逻辑上来说,这太迟了。可能由于许多原因而调用viewWillDisappear
,其中许多原因不在您的控制范围内,并且无法迅速返回该方法,引入新的用户界面元素等,这并不容易。
如果您确实确实需要“保存”与“取消”用户界面,则可以将其自身应用于更多的模态界面(或推送您必须弹出的新视图控制器以返回至标签栏视图控制器)带有保存和取消按钮,而不是标签栏界面。例如。您的标签栏视图可能会显示当前值,您可以点击“编辑”按钮,该按钮会使用保存和取消按钮推送新视图。我们对您的应用程序了解不足,无法建议您这种情况是否合乎逻辑。 (有关其他方法,请参见enabling edit mode in view controller。)