我有一个iOS应用程序,它包含一个“概述”场景作为初始视图控制器,一个“EntryList”场景和一个“NewEntry”场景。它们由导航控制器组织,并使用show(push)segues以上述顺序连接。 NewEntry视图控制器具有“保存”和“取消”菜单栏项,可以展开到EntryList控制器。
我在应用程序图标中添加了一个快速操作,通过使用带有从导航控制器到NewEntry控制器的segue的performSegueWithIdentifier
直接跳转到NewEntry控制器。
在应用程序暂停运行后使用“快速操作”时,无论以前的内容如何,都会将新的NewEntry实例推送到导航堆栈。因此,甚至可以堆叠多个NewEntry实例。在这种情况下,任何剩余的旧NewEntry实例都可以被丢弃。
在应用程序终止后使用Quick Action时,总是首先创建一个新的Overview实例(因为我是初始导航控制器之后的第一个实际VC,我猜?),然后推送NewEntry。在这种情况下没有EntryList场景。
当按下取消或保存项目时,NewEntry场景将被丢弃并适当地采取行动,使用户处于应用程序之前的状态,否则处于概览场景中。
我的问题:
我想避开“UI意大利面条代码”,导航堆栈黑客等等。
答案 0 :(得分:0)
因此,经过一些试验+错误后,我目前的解决方案是将NewEntry场景嵌入到自己的导航控制器中。这是来自EntryList和Quick Action(源自主导航控制器)的“Present Modally”segue的目标。 “保存”和“取消”按钮不会展开,而是在内部连接到执行必要工作的操作,最后调用dismissViewControllerAnimated()
。
如果这是正确的方法,或者你有更好的解决方案,请发表评论。