我是Iphone的新手,我已经启动了一个应用程序,其中我添加了一个自定义标签栏,只需加载到某个特定页面。标签栏按照我的期望工作。现在的问题是,当我导航到其他页面时,标签栏会一直显示,这对我来说会造成严重的问题... 这是我的实现
在.h:
#import <UIKit/UIKit.h>
@class MainMenuViewController;
@interface RoutineListViewController : UIViewController<UITabBarDelegate>{
MainMenuViewController *homeBtn;
UITabBar *mainTabBar;
UIViewController *routineTabViewController;
UIViewController *calendarTaViewController;
UIViewController *editTabViewController;
}
@property (nonatomic, retain) IBOutlet UITabBar *mainTabBar;
@property (nonatomic, retain) IBOutlet UIViewController *routineTabViewController;
@property (nonatomic, retain) IBOutlet UIViewController *calendarTabViewController;
@property (nonatomic, retain) IBOutlet UIViewController *editTabViewController;
- (IBAction)goToHome:(id)sender;
@end
在.m中,我将选项卡实现为:
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
switch (item.tag) {
case 1:
if (routineTabViewController == nil) {
self.routineTabViewController =[[RoutineListViewController alloc] initWithNibName:@"RoutineListViewController" bundle:nil];
[self.view insertSubview:routineTabViewController.view belowSubview:mainTabBar];
routineTabViewController = nil;
[routineTabViewController release];
}
break;
case 2:
if (calendarTabViewController == nil) {
self.calendarTabViewController =[[CalendarTabViewController alloc] initWithNibName:@"CalendarTabViewController" bundle:nil];
[self.view insertSubview:calendarTabViewController.view belowSubview:mainTabBar];
calendarTabViewController = nil;
[calendarTabViewController release];
}
break;
case 3:
if (editTabViewController == nil) {
self.editTabViewController =[[EditTabViewController alloc] initWithNibName:@"EditTabViewController" bundle:nil];
[self.view insertSubview:editTabViewController.view belowSubview:mainTabBar];
editTabViewController = nil;
[editTabViewController release];
}
break;
default:
break;
}
}
当我实现一个按钮转到其他页面时,标签栏会一直显示。这是EditTabViewController.m文件中的按钮实现。
- (IBAction)goToHome:(id)sender {
homeBtn = [[MainMenuViewController alloc] initWithNibName:@"MainMenuViewController" bundle:nil];
[self.view addSubview:homeBtn.view];
}
答案 0 :(得分:1)
根据Apple的规则,TabBarController 假设是主要容器。另外,如果您只是实现自定义UITabBar
,您是否正在使用它将用户推送到其他视图?如果是这样,如果UITabBar
消失,用户将如何返回?
如果您只希望在特定页面可见时条形图可见,为什么不实现UINavigationController
(作为主容器)并让根UIViewController
实现执行UIToolbar
相同的功能。然后,当您导航到另一个页面时(我假设您指的是新屏幕,而不是UIPageControl
中的不同页面或UIWebView
中的网页),一个不包含UIViewController
的新UIToolbar
。
有点像这样:
--UINavigationController
|
-->UIViewController as RootViewController --> Contains UIToolbar
|
-->Pushes UIViewController --> Has no UIToolbar
修改/更新强> 的
我刚看到你的代码,而且我不确定我是否理解你想要实现的目标。我想你可能试图以某种方式实现类似于UINavigationController
的行为而不实际使用一个。
编辑/更新#2 我认为你想要的行为可以这样实现:
UINavigationController (containing IconMenuViewController as RootViewController)
|
--> PageViewController (push into this from any icon touch in IconMenuViewController)
--> Contains UIToolbar/UITabBar
如果您使用上面的层次结构,UINavigationController
会自动为您提供屏幕顶部的NavigationBar
并给您一个后退按钮。只要您创建UIToolbar
的{{1}}或UITabBar
部分,它就会随着您的视图控制器的显示和消失而弹出。这有意义吗?