Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS导航添加项目的最佳实践_Ios_Uinavigationcontroller - Fatal编程技术网

iOS导航添加项目的最佳实践

iOS导航添加项目的最佳实践,ios,uinavigationcontroller,Ios,Uinavigationcontroller,我找不到这个问题的答案,虽然我已经实现了好几次,但可能是错误的方式 假设我有一个iOS应用程序,它有一个主屏幕,它指向一个列表,该列表有一个

我找不到这个问题的答案,虽然我已经实现了好几次,但可能是错误的方式

假设我有一个iOS应用程序,它有一个主屏幕,它指向一个列表,该列表有一个<返回(到主屏幕)和一个添加按钮。现在,当我单击 现在,当我单击add按钮时,它也被添加到堆栈中;当我在屏幕上单击后退时,我返回列表,这很好

问题是,;当我保存新项目时,我想转到详细信息屏幕,但实际上我不想在堆栈上有添加屏幕,因为它将在那里。我需要指向列表的详细信息项的
我知道如何做到这一点,但用导航堆栈实现这一点的最佳方法是什么

添加元素的最佳实践是提供一个ModalViewController。 这样就不会将其添加到堆栈中

更新

让我们以苹果在iOS上提供的简单应用程序为例,联系人应用程序。当您想要添加新联系人时,会显示一个VC。
您需要实现“完成”或“保存”按钮,该按钮将关闭modalViewController,如果您想让用户进入详细信息屏幕,您可以在dismissViewController方法的完成块上发布通知或其他机制,从列表中推送详细信息页。但是在动画上要小心,如果你关闭了模态VC动画,并按下细节页面动画,你可能会得到一些意想不到的行为。我的建议是取消模式VC动画,并在没有动画的情况下推送细节页面。

推送细节视图控制器后,您可以覆盖UINavigationController的viewControllers属性。只需获取当前viewControllers属性数组,迭代并找到您不想看到的属性数组,然后将其删除。请记住再次设置ViewController阵列


但在什么情况下这才是最佳做法?请注意,我并不是说你错了,我是想通过让你添加更多细节来帮助你改进答案。没问题:)。我不想设定最佳实践。我以苹果iOS提供的简单应用程序为例,让我们以contacts应用程序为例。当您想要添加新联系人时,会显示一个VC。我一直在寻找苹果公司已经开发的应用程序的流程问题的例子。所以我将添加页面显示为ModalViewController?但是我需要实现一个手动返回按钮,你需要实现“完成”或“保存”按钮,该按钮将关闭modalViewController,如果您想让用户进入详细信息屏幕,您可以在dismissViewController方法的完成块上发布通知或其他机制,从而将详细信息页面从列表中推出。@ADIPP在某些情况下,您将使用ModelViewController,并且不会。但根据你的评论,你似乎确实理解并使用它们。我可以建议你更新更多的信息,因为目前我不能给自己一个+1,但我想我可以提供更多的信息