我有一个iOS应用,该应用由“概述”场景作为初始视图控制器,“ EntryList”场景和“ NewEntry”场景组成。它们使用导航控制器进行组织,并使用显示(推送)序列按上述顺序进行连接。 NewEntry视图控制器具有展开到EntryList控制器的“保存”和“取消”菜单栏项。

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

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

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

当按下“取消”或“保存”项时,NewEntry场景将被丢弃并采取适当的措施,使用户保持应用程序之前的状态,否则进入概述场景。

我的问题:


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


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

最佳答案

因此,经过一番尝试+错误后,我当前的解决方案是将NewEntry场景嵌入其自己的导航控制器中。这是通过EntryList和Quick Action(来自主导航控制器)中的“以模态形式呈现”提示的目标。 “保存”和“取消”按钮不会展开,而是在内部连接到执行必要工作并最终调用dismissViewControllerAnimated()的操作。

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

关于ios - 快速行动后处理对话,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37681765/

10-12 14:29