代码之家  ›  专栏  ›  技术社区  ›  Alex Gosselin

在iPhone视图中,我应该在哪里“保存”更改以“创建新的”对象?

  •  3
  • Alex Gosselin  · 技术社区  · 15 年前

    我有一个视图,它创建一个新的核心数据管理对象,并填充所有必需的属性,还允许可选的属性。我最初在左上角有一个“完成”按钮,当按下该按钮时,我验证了对象,然后保存并删除了视图。

    现在我在右上角有一个编辑/完成类型设置,所以有时候在视图的顶部有两个相同的“完成”按钮。我想切换左侧按钮,使其具有正常的“后退”按钮,然后通过某种方式验证,如果视图不验证,则停止移除视图。我找不到任何方法来捕获由“后退”按钮调用的方法并对其进行修改,而viewwill消失不起作用,因为无法中止消失。

    我怎样才能做到这一点?如果验证和保存只起作用,我需要验证这个,然后保存,然后删除视图。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Rog    15 年前

    听起来您的视图是一个完美的候选者,可以通过模式而不是通过导航控制器堆栈推送。

    通过以下方式推送创建nsmanagedObject的视图:

    [self presentModalViewController:yourViewController animated:YES]
    

    然后继续使用右上角的“编辑/完成”按钮编辑/验证,与当前一样,验证成功后,只需保存对象并从父视图控制器中取消模式视图控制器:

    [[self parentViewController] dismissModalViewControllerAnimated:YES];
    

    有关详细信息,请查看 http://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html#//apple_ref/doc/uid/TP40007457-CH111-SW14

    如果您仍然想使用左侧的按钮,也许您可以更改右侧的按钮为“编辑/取消”,并在左侧添加一个“完成”按钮,该按钮只有在您不处于编辑模式时才可见。如果合适,您可以在使用上面的代码取消模式视图之前,指向“完成”按钮以运行相同的验证过程,但是“编辑/取消”按钮可能会处理它。

    我希望这有帮助。 罗格

        2
  •  1
  •   Ole Begemann    15 年前

    没有文档记录的方法可以截取 UINavigationController . 如果您想要这个功能,您唯一的选择就是定制 leftBarButtonItem 使用自定义按钮。

    当用户点击该按钮时,您可以先验证对象,然后调用 popViewControllerAnimated:

    不过,很难模仿内置后退按钮的外观。