我是iphone开发的新手。
我已阅读有关在窗口上实现标签栏控制器的教程(例如,作为应用程序的主控制器)。但是,我如何创建一个标签栏控制器作为可由导航栏控制器调用的“独立”UIViewController?
基本上我的导航栏控制器有一个UIViewControllers数组,它显示在表中,然后在用户选择项目时加载相应的视图/控制器。
现在我希望其中一个加载的视图/控制器成为标签栏控制器。我怎么能这样做?
我不确定如何在应用程序委托中没有插座/实例的情况下自行创建标签栏控制器。
希望有道理。谢谢。
答案 0 :(得分:3)
虽然之前的回答是正确的,但我想指出Apple对此并不满意:
您永远不想将标签栏控制器推到导航控制器的导航堆栈上。这样做会产生一种不寻常的情况,即只有当特定视图控制器位于导航堆栈顶部时,标签栏才会出现。标签栏设计为持久性的,因此这种瞬态方法可能会让用户感到困惑。
来自:Apple View Controller Programming Guide
的报价阅读人机界面指南,您的应用可能因“违反界面规则”而被拒绝。更重要的是,你还必须手动处理所有vieWillAppear / Disappear等。我很确定还有另一种设计界面的方法。
此致 保罗
答案 1 :(得分:0)
您有两种选择。
首先。创建UITabBarController(通用alloc-init东西)并将其推送到UINavigationController。
二。您可以创建自定义UIViewController并将UITabBar放在那里。之后,您可以自定义它并将该自定义UIViewController推送到导航控制器。代码如下所示:
UITabBar *tabBar = [[UITabBar alloc] initWithFrame:
CGRectMake(0, self.view.frame.size.height - 49, 320, 49)];
tabBar.autoresizingMask =
UIViewAutoresizingFlexibleTopMargin |
UIViewAutoresizingFlexibleWidth;
[self.view addSubview:tabBar];
例如,您可以在UIViewController的viewDidLoad方法中使用类似的代码。 要处理选项卡更改事件,您必须实现UITabBarDelegate协议并将其分配(例如,给UIViewController本身):
tabBar.delegate = self;
之后你必须实施
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
帮助您捕捉事件的方法。