我有一个 iOS 应用程序,它包含一个作为初始视图控制器的“Overview”场景、一个“EntryList”场景和一个“NewEntry”场景。它们由导航控制器组织并按上述顺序连接,使用显示(推送)segues。NewEntry 视图控制器具有展开到 EntryList 控制器的“保存”和“取消”菜单栏项。
performSegueWithIdentifier
我向应用程序图标添加了一个快速操作,该图标通过使用从导航控制器到 NewEntry 控制器的 segue直接跳转到NewEntry 控制器。
在应用程序暂停运行后使用快速操作时,新的 NewEntry 实例将被推送到导航堆栈上,而不管之前的内容如何。因此,甚至可以堆叠多个 NewEntry 实例。在这种情况下,可以丢弃任何剩余的旧 NewEntry 实例。
在应用程序终止后使用 Quick Action 时,总是首先创建一个新的 Overview 实例(因为是初始导航控制器之后的第一个实际 VC,我想?),然后推送 NewEntry。在这种情况下没有 EntryList 场景。
当按下 Cancel 或 Save 项时,应丢弃 NewEntry 场景并对其进行适当的操作,从而使用户处于应用程序之前的状态,或者处于概览场景中。
我的问题:
- 应用程序应该执行的正确行为是什么?
- 我如何实现这种行为?
- 什么是实现所有 segue 的“最佳实践”,特别是当 NewEntry 场景不一定在 EntryList 场景之后推送时?
我想避开“UI 意大利面条代码”、导航堆栈黑客等。