Ios 视窗将消失

Ios 视窗将消失,ios,uiview,Ios,Uiview,我在选项卡视图上有一个表单;如果任何字段已更改,我将表单标记为脏,如果表单脏,我想弹出一个带有“保存”/“取消”的操作表(代替“保存”按钮)。在用户响应正在处理的操作表之前,是否有任何方法可以阻止视图消失(或从视图堆栈中删除)?一旦应用程序进展到调用视图将消失:时,就无法阻止视图消失。要做的事情是创建如下函数: - (void)saveAndClose { //Display sheet asking user what they want to do } - (void)dismi

我在选项卡视图上有一个表单;如果任何字段已更改,我将表单标记为脏,如果表单脏,我想弹出一个带有“保存”/“取消”的操作表(代替“保存”按钮)。在用户响应正在处理的操作表之前,是否有任何方法可以阻止视图消失(或从视图堆栈中删除)?

一旦应用程序进展到调用
视图将消失:
时,就无法阻止视图消失。要做的事情是创建如下函数:

- (void)saveAndClose {
    //Display sheet asking user what they want to do
}


- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated
{
    if (buttonIndex == 0) // 0 or whatever the index of your save button is
    {
        // Perform save functions
    }

    [self dismissModalViewControllerAnimated:YES]; // or pop the view controller if appropriate
}

一旦应用程序进展到调用了
视图将消失:
,您就无法阻止视图消失。要做的事情是创建如下函数:

- (void)saveAndClose {
    //Display sheet asking user what they want to do
}


- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated
{
    if (buttonIndex == 0) // 0 or whatever the index of your save button is
    {
        // Perform save functions
    }

    [self dismissModalViewControllerAnimated:YES]; // or pop the view controller if appropriate
}
有几点想法:

  • 值得注意的是,苹果(HIG)明确反对这种做法。他们建议应用程序应该“要求人们只在必要时保存”,因为人们“应该有信心,除非他们明确取消或删除他们的工作,否则他们的工作总是会被保留下来。”也许在你的情况下,拥有这一功能很重要,但通常不鼓励使用

  • 另一种选择是,如果您想让用户有机会恢复到旧设置,则提供一个“撤消”按钮,这样,您可以使用HIG并有效地自动保存,但如果用户确实需要,您也可以让用户显式恢复到以前的值

  • 正如其他人所注意到的,在
    视图上提示保存或放弃的概念将消失
    ,但并不完全有效。从逻辑上讲,这个过程已经太晚了<代码>视图将消失可能因为太多的原因而被调用,其中许多原因不在您的控制之下,不立即返回到该方法、引入新的用户界面元素等也不是不可能的

  • 如果你真的,真的需要“保存”和“取消”的用户界面,那么这将使它本身更像是一个模式界面(或者按下一个新的视图控制器,你必须弹出它才能返回到你的选项卡栏视图控制器),带有保存和取消按钮,而不是选项卡栏界面。例如,您的选项卡栏视图可以显示当前值,您点击“编辑”按钮,该按钮可使用“保存”和“取消”按钮推送新视图。我们对您的应用程序了解不够,无法建议您的应用程序是否符合逻辑。(有关另一种方法,请参见。)

  • 有几点想法:

  • 值得注意的是,苹果(HIG)明确反对这种做法。他们建议应用程序应该“要求人们只在必要时保存”,因为人们“应该有信心,除非他们明确取消或删除他们的工作,否则他们的工作总是会被保留下来。”也许在你的情况下,拥有这一功能很重要,但通常不鼓励使用

  • 另一种选择是,如果您想让用户有机会恢复到旧设置,则提供一个“撤消”按钮,这样,您可以使用HIG并有效地自动保存,但如果用户确实需要,您也可以让用户显式恢复到以前的值

  • 正如其他人所注意到的,在
    视图上提示保存或放弃的概念将消失
    ,但并不完全有效。从逻辑上讲,这个过程已经太晚了<代码>视图将消失可能因为太多的原因而被调用,其中许多原因不在您的控制之下,不立即返回到该方法、引入新的用户界面元素等也不是不可能的

  • 如果你真的,真的需要“保存”和“取消”的用户界面,那么这将使它本身更像是一个模式界面(或者按下一个新的视图控制器,你必须弹出它才能返回到你的选项卡栏视图控制器),带有保存和取消按钮,而不是选项卡栏界面。例如,您的选项卡栏视图可以显示当前值,您点击“编辑”按钮,该按钮可使用“保存”和“取消”按钮推送新视图。我们对您的应用程序了解不够,无法建议您的应用程序是否符合逻辑。(有关另一种方法,请参见。)


  • 刚刚注意到这是一个UITabBar动作。那样的话,恐怕你没有很多选择。我将看到的是接管整个屏幕(可能利用AppDelegate)以“调暗”屏幕并显示您的警报。如果你需要帮助,让我知道。刚刚注意到这是发生在UITabBar行动。那样的话,恐怕你没有很多选择。我将看到的是接管整个屏幕(可能利用AppDelegate)以“调暗”屏幕并显示您的警报。如果你需要帮助,告诉我,罗伯特是对的。如果你已经建立了一个选项卡式界面,那么当用户想要访问其他选项卡时,任何阻止用户访问其他选项卡的实例都是设计和高性能的失败。你需要重新思考你的过程并考虑自动保存。是的…我已经重构了一点。。。我现在在uinav栏上动态创建一个“保存”按钮,当用户更改表单上的任何数据时,该按钮将显示出来。。。感谢您的见解和建议!罗伯特是对的。如果你已经建立了一个选项卡式界面,那么当用户想要访问其他选项卡时,任何阻止用户访问其他选项卡的实例都是设计和高性能的失败。你需要重新思考你的过程并考虑自动保存。是的…我已经重构了一点。。。我现在在uinav栏上动态创建一个“保存”按钮,当用户更改表单上的任何数据时,该按钮将显示出来。。。感谢您的见解和建议!