快速操作后处理对话

问题描述:

我有一个iOS应用程序,它包含一个“Overview”场景作为初始视图控制器,一个“EntryList”场景和一个“NewEntry”场景。它们由一个导航控制器组成,并按照所提到的顺序连接,使用show(push)segues。 NewEntry视图控制器具有展开到EntryList控制器的“Save”和“Cancel”菜单栏项目。快速操作后处理对话

我在使用performSegueWithIdentifier直接跳转到NewEntry控制器的应用程序图标上添加了一个快速操作,该快捷操作从导航控制器到NewEntry控制器。

当应用程序暂停运行后使用快速操作时,无论先前的内容如何,​​新的NewEntry实例都会被推入导航堆栈。所以,甚至可以堆叠多个NewEntry实例。在这种情况下,任何剩余的旧的NewEntry实例都可能被丢弃。

在应用程序终止后使用Quick Action时,总是会首先创建一个新的Overview实例(因为是初始导航控制器之后的第一个实际VC,我想呢?),然后NewEntry被推送。在这种情况下没有EntryList场景。

当按下取消或保存项目时,NewEntry场景将被丢弃并采取适当的措施,使用户处于应用程序之前的状态,否则将在用户处于应用程序状态。

我的问题:

  • 什么是正确的行为的应用程序应该执行?
  • 我该如何实现该行为?
  • 什么是实现所有段落的“最佳实践”,尤其是当NewEntry场景不一定在EntryList场景之后被推送时?

我想避开“UI面条代码”,导航堆栈黑客等

所以,有些审判+错误之后,我目前的解决方案是嵌入NewEntry现场变成自己的导航控制器。这是来自EntryList和Quick Action(源自主导航控制器)的“Present Modally”节点的目标。 “保存”和“取消”按钮不会放松,而是内部连接到执行必要工作的操作,并最终致电dismissViewControllerAnimated()

请评论,如果这是正确的方式,或者如果你有更好的解决方案。