【问题标题】:Proper way to setup a UISegmentedControll on UINavigationController UINavigationBar all inside UITabBarController在 UITabBarController 内的 UINavigationController UINavigationBar 上设置 UISegmentedControll 的正确方法
【发布时间】:2011-01-07 15:34:49
【问题描述】:

标题几乎描述了这一切。

问题在于 UISegmentedControll 回调(按钮按下)的处理。 如果所有嵌套视图的内容类型都相同(即一些 UITableViewControllers),那么我可以切换 dataSource 并重新加载表。

但事实并非如此,我在其中有 3 个非常不同的视图,它们允许基于 NavigationControllers 进行进一步的钻取/交互。

所以我设置 ATM 的方式是有一个“容器”类,我将所有 UINavigationControllers 都放入其中。它们都共享相同的一个 UISegmentedController,我将回调重定向到容器视图控制器。这感觉一点都不好。

另外还有一个问题,当用户点击标签栏图标时,导航控制器会弹出到根目录,这是......空容器视图。

这是我想要实现的目标的图片:

【问题讨论】:

    标签: iphone uinavigationcontroller uitabbarcontroller uisegmentedcontrol


    【解决方案1】:

    在我的一个应用程序中,我有一个由三个独立 NSMutableArrays 的数据填充的表视图。我有条件地在 cellForRowAtIndexPath 中设置单元格内容,并有条件地在 numberOfRowsInSection 中获得 3 个不同的计数。虽然这不是您要寻找的具体内容,但您不需要像初始示例中所表达的那样拥有 3 个不同的数据源。

    你的直觉是正确的。它似乎过于复杂。

    使用一个 NavigationController 并在 NavigationController.view 上交换 addSubview/ removeFromSuperview 怎么样?

    【讨论】:

    • 点击弹出到根控制器的 TabBar 图标怎么样(这是一个空视图)有什么明智的补救措施吗?我会尝试你提到的交换。干杯
    【解决方案2】:

    我在最近的一个 iPad 应用程序中遇到了类似的功能要求,我使用的解决方案在以下链接中 - 本质上,我实现了一个“管理”视图控制器,它根据所选索引添加/删除子视图分段控件,正确处理事件。

    我通过将“管理”视图控制器作为参数传递给子视图视图控制器,并让这些控制器回调父视图以推送到导航堆栈,从而解决了导航控制器问题。

    我特别喜欢该解决方案的一点是,它让我可以将每个段的相应视图的代码分开,而不是在单个重载视图控制器中混乱。

    详情在这里:UISegmentedControl Best Practice

    好朋友,希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-24
      • 2016-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      相关资源
      最近更新 更多