【问题标题】:iOS - One SegmentedControl - Multiple ViewControllersiOS - 一个 SegmentedControl - 多个 ViewControllers
【发布时间】:2012-08-10 06:05:53
【问题描述】:

我的 EventsMasterViewController 底部有一个 SegmentedControl,但我还需要它位于 EventsDetailViewController 上。

MasterViewController 有一个用于列出事件的 TableView,SegmentedControl 充当“过滤器”。不过点击一个事件需要调出Event Detail View,但是我需要将SegmentedControl保持在底部进行导航。

最好的方法是什么?

【问题讨论】:

    标签: ios uiviewcontroller navigation uisegmentedcontrol


    【解决方案1】:

    UISegmentedControl 不是用来“导航”的,过滤是有道理的,但为什么要在没有过滤内容的详细视图上显示这些“过滤器”?

    如果您需要导航,请使用UITabBarController...

    如果您需要“过滤”,请使用UISegmentedControl 并将其添加到UINavigationController 的底部工具栏中。

    您需要为每个UIViewController 创建一个UISegmentedControl,但再次提醒您,详细视图上的“过滤器”没有意义。

    更新

    在我看来,您应该将UITabBarController 实现为用于导航的根控制器。然后将UINavigationController + UIViewController 用于您的主/详细视图。并在您的主控制器中使用一个UISegmentedControl 来修改表格视图输出。

    【讨论】:

    • 我两者都需要,但我不想拥有两个单独的控件。过滤器的作用也类似于导航。如果我在某个事件的详细视图中,然后单击即将发生的事件,它只会带我回到我以前的 ViewController 并显示正确的过滤器。
    • UX 方面,这是个非常糟糕的主意,无论如何你最终都会创建两个控件。因为每个UISegmentedControl 都必须分配不同的操作。在第一个控制器中,它将直接更改它的视图,但在第二个控制器中,它必须弹出当前控制器,返回并更新第一个控制器的视图。这意味着您必须在此基础上创建委托/协议。
    【解决方案2】:

    这取决于你用什么方法调出细节视图。如果它存在,那么它是不可能的,因为它总是从底部出现。如果是导航控制器,你可以将细节视图的框架设置得更小,让段可以看到。注意边界。

    【讨论】:

    • 我正在使用导航控制器来包含我的 MasterViewController。不过,恐怕我不完全理解您的回答。我对 iOS 比较陌生。
    • 设置detail view的属性frame,把frame.size.height设置小一些,比如detailview.frame.size.height=400,就可以看到段了
    • 但是现在它们是完全独立的 UIViewControllers。那么我如何在一个 UIViewController 中使用两个视图呢?
    • 当你初始化详细视图时,设置它。然后将部分看到详细视图下的主视图
    猜你喜欢
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多