2012-02-21 239 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作爲你的窗口的根視圖控制器。將您的其他視圖控制器作爲模式視圖控制器呈現。關閉模式視圖控制器以顯示標籤欄控制器。

相關問題