UINavigationController中的UISegmentedControl

时间:2014-01-10 18:51:31

标签: ios uinavigationcontroller uisegmentedcontrol

我有两个UITableViewController的“Flowers”和“Trees”。如果您选择特定的花卉或树木,则会显示一些详细信息。所以这是每个人都知道的标准行为。我想要实现的目标如下:

这些UITableViewControllers应该由一个UINavigationController管理,用户应该能够通过UISegmentedControll选择它们,UISegmentedControll放在UINavigationController的Header中。因此,用户可以通过与UISegmentedControl交互来在UITableViewControllers之间切换。如果用户选择一个特定的花或树,则应显示详细信息,并且应使用后退按钮替换UISegementedControl。

这可能吗?我怎样才能做到这一点?如果不清楚我可以尝试画一些图片: - )

谢谢 基督教

2 个答案:

答案 0 :(得分:1)

这不是导航控制器的工作方式。导航控制器管理一堆视图控制器。在导航栏中有一个分段控制器,并以某种方式在子视图控制器之间切换 - 如果你可以使它工作 - 违反Apple的人机界面指南。如果你确实让它发挥作用,Apple可能会拒绝你的应用程序。

您所描述的更像是标签栏控制器。我开发了一个客户端的app原型,它使用了一个父视图控制器,它是一个标签栏控制器的变体,它在底部有一个分段控件,可以完成你所描述的。

您可以构建自己的自定义父视图控制器来执行您所描述的操作,但是您应该 NOT 尝试使其在导航控制器中混合视图控制器堆栈。

答案 1 :(得分:0)

这是可行的,尽管这是否可取。导航控制器中的VC不是对等的 - 一个必须是根,其他必须被推送并弹出它。所以你可以这样做:

  • VC1是根,并设置分段控件,使自己成为 valueChanged的目标
  • 如果分段控件的值更改为其他段,请按VC2(如果需要,使用segue,在IB中设置)。
  • VC1仍然在堆栈中,仍然会从控件中收到valueChanged通知。
  • 当值更改为原始段时,让导航控制器弹出到root。

你可能想隐藏VC2上的后退按钮。

关于可行性:我希望有充分的理由这样做,而不是标准模式。它是过渡时的幻灯片动画吗?这可以在没有nav vc的情况下创建。是否让每个段呈现视图控制器而不是视图?可以说导航vc是一个好的,已经构建的容器vc,使用它可以省去一些麻烦。任何这种情况都不太可能让你的应用被苹果公司拒之门外。