快速操作后处理对话

Handling dialogue after Quick Action

我有一个 iOS 应用程序,它包含一个作为初始视图控制器的 "Overview" 场景、一个 "EntryList" 场景和一个 "NewEntry" 场景。它们使用导航控制器进行组织,并使用显示(推送)segues 按上述顺序连接。 NewEntry 视图控制器具有 "Save" 和 "Cancel" 菜单栏项,它们展开到 EntryList 控制器。

我向应用程序图标添加了一个快速操作,通过使用 performSegueWithIdentifier 和从导航控制器到 NewEntry 控制器的 segue 直接跳转到 NewEntry 控制器。

当应用程序从 运行 暂停后使用快速操作时,新的 NewEntry 实例将被推送到导航堆栈,而不管之前的内容。因此,甚至可以堆叠多个 NewEntry 实例。在这种情况下,可以丢弃任何剩余的旧 NewEntry 实例。

当应用程序终止后使用快速操作时,总是首先创建一个新的 Overview 实例(因为它是初始导航控制器之后的第一个实际 VC,我想?),并且然后推送 NewEntry。本例中没有 EntryList 场景。

按下“取消”或“保存”项时,将丢弃 NewEntry 场景并对其进行适当操作,使用户处于应用程序之前的状态,或者处于概览场景。

我的问题:

我想避开 "UI spaghetti code"、导航堆栈黑客等

所以,经过反复试验,我目前的解决方案是将 NewEntry 场景嵌入到它自己的导航控制器中。这是 EntryList 和快速操作(源自主导航控制器)的 "Present Modally" segues 的目标。 “保存”和“取消”按钮不会展开,而是在内部连接到执行必要工作并最终调用 dismissViewControllerAnimated().

的操作

如果这是正确的方法,或者您是否有更好的解决方案,请发表评论。