2012-02-21 153 views
1

我想问一下,在显示一个视图控制器后是否可以显示tabbarcontroller。 我见过很多关于tabbarcontroller教程,但使用此行他们都放在AppDelegate中:显示一个视图控制器后的Tabbar控制器

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ 
[self.window addSubview:tabController.view]; 
[self.window makeKeyAndVisible]; 
return YES;} 

我想什么做的是显示一个视图控制器第一:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{  
     self.window.rootViewController = self.viewController; 
     [self.window makeKeyAndVisible]; 
     return YES; } 

和在显示viewController之后,用户将不得不点击一个按钮来显示带有TABBARCONTROLLER的另一个视图。如果可能的话,我该怎么做?

回答

2

是的,您可以...在您的第一个控制器中,完成一些工作后,然后按下Tabbar控制器。

例子: -

假设你已经按分分级的UITabBarController TabBarController类。

- (void) doSomeJob 
{ 
    if(true) 
    { 
    TabBarController *aTabBarController = [[TabBarController alloc] initWithNibName:@"TabBarController" bundle:nil]; 
    [self.navigationController pushViewController:aTabBarController animated:YES]; 
    [aTabBarController release];  
    } 
} 

EDITED自定义标签栏:

.h文件中

@interface TabBarController : UITabBarController<UITabBarControllerDelegate, UINavigationControllerDelegate> 
{ 
    UITabBarController *tabController; 
    UINavigationController *1NavController; 
    UINavigationController *2hNavController; 
} 

@property (nonatomic, retain) UITabBarController *tabController; 
@property (nonatomic, retain) UINavigationController *1NavController; 
@property (nonatomic, retain) UINavigationController *2hNavController; 

.m文件:

- (void)viewDidLoad 
{ 
[super viewDidLoad];  

tabController = [[UITabBarController alloc] init]; 
tabController.delegate = self; 
tabController.tabBar.backgroundColor = [UIColor clearColor]; 

//Add some tabs to the controller... 
1ViewController *1ViewController = [[1ViewController alloc] initWithNibName: @"1ViewController" bundle: nil]; 
1NavController = [[UINavigationController alloc] initWithRootViewController:1ViewController]; 
1NavController.tabBarItem = [[UITabBarItem1 alloc] init]; 

2ViewController *aSearchViewController = [[2ViewController alloc] initWithNibName: @"2ViewController" bundle: nil]; 
2NavController = [[UINavigationController alloc] initWithRootViewController:2ViewController]; 
2NavController.tabBarItem = [[UITabBarItem2 alloc] init]; 

tabController.viewControllers = [NSArray arrayWithObjects: 1NavController,2NavController,nil]; 

[self.view addSubview:tabController.view]; 
} 

你也需要相应地实现标签栏的委托方法...

+0

请给TabBarController类。 – Prashant 2012-02-21 04:24:52

+0

@PrashantBhayani:检查更新的代码 – Maulik 2012-02-21 05:21:35

+0

@Maulik:嗨...我有一个疑问,创建一个自定义选项卡栏。你能帮我吗? – 2012-12-26 10:28:16

0

我有一个与导航控制器和标签栏视图控制器的情况,但你需要与视图控制器,所以我修改我的代码根据你的requirements.check n回复 首先初始化视图控制器和tabbar控制器都在应用程序委托.h文件 &给物业也很喜欢:

{ 
    IBOutlet FirstViewController * fvc; 

    IBOutlet UITabBarController *tabBarController; 
} 
@property (nonatomic, retain) IBOutlet FirstViewController * fvc; 
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController; 

比.m文件设置视图控制器视图为u想先设置简单视图控制器,如:

fvc = [[FirstViewController alloc]initWithNibName:@"FirstViewController" bundle:[NSBundle mainBundle]]; 


[self.window addSubview: fvc.view]; 

现在在其中u要跳转到的TabBar视图控制器用户这一特定事件的这个视图控制器:

AppDelegate_iPhone *appDelegte_iPhone=(AppDelegate_iPhone*)[[UIApplication sharedApplication]delegate];     
[[[appDelegte_iPhone viewController] view] removeFromSuperview]; 
[[appDelegte_iPhone window]addSubview:[[appDelegte_iPhone tabBarController]view]]; 

    [[appDelegte_iPhone tabBarController]setSelectedIndex:0]; 
0

离开的UITabBarController作为你的窗口的根视图控制器。将您的其他视图控制器作为模式视图控制器呈现。关闭模式视图控制器以显示标签栏控制器。

相关问题