【问题标题】:Multiple views and controllers in UITabBarControllerUITabBarController 中的多个视图和控制器
【发布时间】:2009-11-11 19:07:14
【问题描述】:

我正在尝试在 UITabBarController 中添加多个视图。目前我的对象层次结构如下所示:UITabBarController -> UIViewController* -> UIView*。作为更具体的示例,我的 UITabBarController 的第一个视图控制器是 UIViewController,它具有三个子视图,由 UISegmentedControl 控制。根据选择的段,我将相应的视图推到前面。

我知道我可以使用 UINavigationController 来管理我的三个视图;但是,我希望呈现的数据并不是真正的分层数据。

是否有除 UITabBarController 或 UINavigationController 之外的容器控制器示例可以用于这种情况?或者我应该使用另一种方法(我目前正在手动管理视图)。

谢谢!

【问题讨论】:

    标签: iphone iphone-sdk-3.0


    【解决方案1】:

    Custom view controllers 包含在 View Controller Programming Guide 中。

    如果您想更改布局以使用 UINavigationController,您可以删除分段控制视图,并让第一个视图成为导航控制器内的表格视图。该表将具有分段控件具有的三个选项,点击它们将推送与该选项关联的视图。这样,您就创建了分层视图布局,而不是使用分段控件,分段控件通常用于切换功能而不是控件视图。

    如果您选择这样做,thesetwo 指南部分将是一个不错的起点。

    【讨论】:

    • 谢谢本。表格和导航控制器方法的问题在于,从一个视图切换到另一个视图需要弹出表格并将新控制器推入(即单击 2 次)。我希望用户能够一键切换不同的视图。您是否可以推荐替代方案?
    • 那你应该继续使用 UIViewController 和分段控件。如果三个子视图足够小,用户应该不会感到困惑。
    • 您可以使用 UINavigationController 以任何您想要的方式设置堆栈,使用 setViewControllers:animated:
    【解决方案2】:

    实际上并没有任何支持框架 - 通常您必须自己管理切换容器视图中的切换视图。

    我过去采用的一种方法是为每个切换视图维护一个 ViewController 数组,并将 viewController.view 添加为切换容器视图的子视图。然后我围绕视图控制器的切换编写代码,以在包含的视图控制器上调用 viewWillAppear 和 viewWillDisappear,因为它们被换入和换出,这使得事情变得更加简单,因为您可以完全分开处理它们。

    您可以通用地编写该类,然后重新使用它。

    【讨论】:

      猜你喜欢
      • 2010-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-01
      • 2015-08-22
      • 1970-01-01
      相关资源
      最近更新 更多