关于ios:使用UiNavigationController带来的好处

Benefits from using UiNavigationController

我正在开发一个已经为Android开发的iOS应用程序。

问题是,考虑到应用程序页面的以下方案,我不知道如何组织uiviewcontrollers:

enter image description here

这个方案很简单:有一个登录页面指向主页面。从这个主页面上,有四个按钮,它们都指向一个特定的视图层次结构,但是在每个按钮的最底部,用户可以直接返回主页面。主页面访问的每个页面也将有一个自定义后退按钮(我自己的图像)

问题是:在我的例子中,使用UINavigationController有什么好处(显然是以主页为根的)?或者我可以简单地创建每个控制器并只使用模态分段吗?


  • 如果视图控制器具有导航关系,那么可以使用uinavigationcontroller:
  • In 'push' segue, you are basically pushing your ViewController into an
    already setup"navigation stack". Well, of course, this is under the
    assumption that the ViewController that performs the 'pushing'
    operation belongs to the same navigation stack as the ViewController
    is pushed into. Generally, you push a ViewController if the pushed
    ViewController has some sort of a relationship with the pushing
    ViewController. This is very common in applications that has a
    NavigationController in its system. A good example for a push segue is
    a system where you are displaying a list of contacts. And on tap of a
    particular contact, you are pushing a VC that has the corresponding
    details of the contact.

    例如现实世界:产品列表=>产品详细信息=>产品评论

  • 如果你想临时呈现一个视图控制器,而主要焦点是你的视图控制器,但是你需要呈现另一个视图控制器来执行一个任务,比如"过滤"、"登录",调整"设置",那么模式选择是一种方式。
  • In 'modal' segue, there is no stack as such. You are presenting a VC
    'modally' over the presentee VC, if that makes sense. This can happen
    across any ViewController without any relationship rules. The
    presenter should take care of dismissing the VC it presented. A good
    example for modal segue is login. On tap of login, you are modally
    presenting a VC that has no relationship with the presenter.

  • 如果视图控制器彼此不相关,但每个视图控制器都有自己的导航堆栈,那么UITabBarController是一种方法。
  • 故事板(xcode):推送和模态segue有什么区别?


    决定是否使用模态segue与show(push)完全取决于用户体验的目的和上下文。如果您引导用户沿着一条线性路径前进,在该路径中,每个连续的vc都深入到一个奇异的想法中,那么使用show segues和navigationcontrollers。例如,设置应用程序,您可以在其中钻取所有细节。大多数电子商务应用程序将使用导航控制器引导用户完成购买。

    如果你想向用户展示一个用户可以响应的单一概念,或者关闭它继续使用应用程序的其余部分。然后使用模态表示。在iPhone中添加联系人就是一个很好的例子。

    从视觉上看,不同之处在于ShowSegue从应用程序的右侧显示了VC,滑到了前一个VC上。(如果用户打开了阿拉伯语,从右到左的语言,显示segue将来自vc的左侧)模式来自应用程序的底部。

    从你的图纸来看,但对你的应用程序一无所知,我认为你想使用导航控制器。您也可以考虑使用TabbarController。如果这些按钮中的每一个都引导用户使用应用程序的各种方式,比如在一个大的应用程序中使用迷你应用程序,那么TabbarController是合适的。


    我想说,如果主"主"视图控制器中的每个附加视图控制器没有任何子视图控制器,那么您可以只让每个按钮以模态方式显示视图控制器。

    主要的区别是,如果您使用导航控制器,您可以将一个VC"推"到视图控制器的导航堆栈上,而以形式呈现它可以被认为是一个"一次性"操作,其中用户在新屏幕上做一些事情,并且没有逻辑前进的地方(如向新联系人添加信息)。

    你可以看到这篇文章来获得更详细的答案:

    在故事板中,莫代尔和普什塞格有什么区别?