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的引用
例如:
LoginViewController 即 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 应用程序的第一个视图?