iPhone 应用程序 - UINavigationController 和 UITabBarController 的组合

Posted

技术标签:

【中文标题】iPhone 应用程序 - UINavigationController 和 UITabBarController 的组合【英文标题】:iPhone Application - combination of UINavigationController and UITabBarController 【发布时间】:2010-07-19 04:25:49 【问题描述】:

我想制作具有复杂视图的登录应用。

需求流程如下:

Login Page --> Menu Page --> Detail Page with Tab Control. --> Navigation Page

这里的“详细信息页面”又是两个视图的组合。导航视图和选项卡视图。

即“详细信息页面”将在顶部有一个导航控件(导航栏),该控件的其余部分是一个选项卡控件,以便用户可以随时在选项卡之间切换。如果用户在导航控件中按“下一步”,他们将转到新页面,并可以通过从下一页按返回再次返回“选项卡视图”。

此外,我还有很多不适合单个选项卡视图的选项卡,因此我希望最后一个选项卡更像是更多选项,并且会转到不同的视图(表格视图的自定义)。

目前我已经开发了如下的Window基础应用程序。

    从委托初始化的主控制器 (MainSwitcherViewController)。

    这个主控制器有多个其他UIViewsController的引用

    例如:

    Lo​​ginViewController 即 UIViewController。 MenuViewController 即 UIViewController。

    最初我显示 LoginViewController。

    成功登录后,我会显示 MenuViewController。 从 MenuViewController 对任何操作(选择菜单 - 当前添加为 UIButton),我打开新视图,但不是新视图 (UIViewController),我想进入导航视图和选项卡视图组合视图,如上所述.

这是我的问题:

    我设计屏幕/视图的方法是否正确,还是需要采取其他方法? 如何在 UIViewController 到 TabViewController 或 NavigationViewController 之间切换? 如何创建组合控制器,在顶部和底部 TabBarViewControl 上具有导航控件,这样每个选项卡的导航控件都可见(共享)。

我是 iPhone 应用开发的初学者,

请给我一些具有类似示例的指针或链接。

提前致谢。

【问题讨论】:

【参考方案1】:

好的,首先你的方法很好。您可以在与 UINavigationController 相同的类中拥有一个 UITabBarController。只需创建标签栏控制器,并在同一个类中创建导航控制器。用户将能够在该视图中同时使用两者。

为此,在带有标签栏的类中:

UITabBarController *mainTabBar = [[UITabBarController alloc] init];

然后将视图添加到该选项卡栏控制器。在其中一个 UIViewController 中,添加一个导航控制器:

UIViewController *mainViewController = [[MainViewController alloc] init];
mainViewController.title = @"Welcome";
UINavigationController *mainViewNavController = [[UINavigationController alloc] init];
[mainViewNavController pushViewController:mainViewController animated:NO];

然后只需将标签栏与新视图一起添加到视图中:

mainTabBar.viewControllers = [NSArray mainViewNavController, nil];

请记住只将导航控制器添加到标签栏控制器,因为如果您像往常一样添加类,它将没有导航控制器功能。

希望这有帮助,如果没有,我很乐意澄清任何事情。

【讨论】:

以上是关于iPhone 应用程序 - UINavigationController 和 UITabBarController 的组合的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationController 中的 UITableViewController 表示未知深度的树结构

如何将 UINavigationController 添加到 UITabBar 应用程序的第一个视图?

模态视图的奇怪位置

ios,导航栏与其内容视图重叠

在 UISplitViewController 中弹出 UINavigationController 会导致奇怪的过渡

UINavigationBar 中的多色后退按钮