ios忽略viewWillDisappear

时间:2012-05-27 05:16:56

标签: ios uiview

我在标签视图上有一个表单;我标记了任何字段已被更改的脏表格,我想弹出一个ActionSheet" save" /"取消"如果表单是脏的(代替"保存"按钮)。有没有办法阻止视图消失(或从视图堆栈中删除),直到用户响应正在处理的ActionSheet?

2 个答案:

答案 0 :(得分:3)

有几点想法:

  1. 值得注意的是,Apple的Human Interface Guidelines(HIG)明确不鼓励这种做法。他们建议应用程序应该“仅在必要时让人们保存”#34;因为人们应该确信他们的工作总是得到保留,除非他们明确取消或删除它。"也许在您的情况下,拥有此功能非常重要,但通常不鼓励这样做。

  2. 另一种方法是,如果您想让用户有机会恢复原来的设置,请提供"撤消"按钮,这样,你尊重HIG并有效地自动保存,但是如果他们确实需要,你也可以让用户明确地恢复到之前的值。

  3. 正如其他人所说,提示在viewWillDisappear上保存或放弃的概念并不常用。在这个过程中,这在逻辑上太迟了。可能会因为太多原因而调用viewWillDisappear,其中许多原因并不在您的控制范围之内,并且不能及时返回到该方法,引入新的用户界面元素等等。

  4. 如果你真的,真的需要"保存"与"取消"用户界面,然后通过保存和取消按钮而不是标签栏界面,使自己适用于更多的模态界面(或推送一个必须弹出以返回到标签栏视图控制器的新视图控制器)。例如。您的标签栏视图可以显示当前值,您点按"编辑"按钮,使用保存和取消按钮推送新视图。我们对您的应用程序了解不够,无法在您的情况下建议这是否合乎逻辑。 (有关其他方法,请参阅enabling edit mode in view controller。)

答案 1 :(得分:0)

一旦应用程序进展到调用viewWillDisappear:的位置,您就无法阻止视图消失。要做的是创建一个像:

这样的函数
- (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
}