0

我想创建类似下面的东西。RootView 没有 TabBar,从第二个视图看应该有 TabBar。

在此处输入图像描述

我目前所做的是,我正在UINavigationController用作控制器 calass

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
   
    
    UIViewController *rootController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
    
    navigationController = [[UINavigationController alloc] initWithRootViewController:rootController];
        
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    [self.window addSubview:navigationController.view];
    [self.window makeKeyAndVisible];
    return YES;
}

但是如何使用UITabBarSecondViewController 中的 tabBarController?

4

7 回答 7

1

创建第二个视图的对象,然后使用 tabbarcontroller 推送您的视图

于 2012-11-08T09:51:50.150 回答
0

对于 appdelegate 中的示例编写 loadnewview 方法。使用 buttonPressed 方法进行按钮操作或第一个视图控制器的任何对象操作,如下所示从第二个视图控制器显示选项卡栏。我取了两个标签作为示例,所以我将容量写为 2。您最多可以取 5。

-(IBAction)buttonPressed:(id)sender
{    
    HomeViewController *homeVC=[[HomeViewController alloc]initWithNibName:@"HomeViewController" bundle:nil];

    [self.navigationController pushViewController:homeVC animated:YES];        
    [appDelegate loadnewview];
}    

-(void)loadnewview
{    
    if(!self.tabBarController)
        self.tabBarController = [[UITabBarController alloc] init];

    self.tabBarController.delegate=self;    
    NSMutableArray *localcontrollerarray = [[NSMutableArray alloc] initWithCapacity:2];        
    UIViewController *viewController1 = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil];        
    UINavigationController *navi1 = [[UINavigationController alloc] initWithRootViewController:viewController1];        
    [localcontrollerarray addObject:navi1];        
    UIViewController *viewController2 = [[ScanViewController alloc] initWithNibName:@"ScanViewController" bundle:nil];    
    UINavigationController *navi2 = [[UINavigationController alloc] initWithRootViewController:viewController2];        
    [localcontrollerarray addObject:navi2];        
    self.tabBarController.viewControllers = localcontrollerarray;    
    [self.window addSubview:self.tabBarController.view];    
}
于 2012-11-12T13:32:29.737 回答
0

您需要推送您的 Tabbar 控制器的对象。初始化标签栏控制器的对象并将所有其他控制器对象添加到标签栏控制器的视图控制器数组中。

按钮操作:-

1> 初始化标签栏控制器,假设你将它的对象命名为objTab;

2> objTab.viewcontrollers = [NSArray arrayWithObjects:..] ---> 作为标签栏控制器一部分的所有视图控制器的对象。因此,需要首先创建所有对象。

3> self.navigationcontroller pushViewController: objTAb

于 2012-11-08T09:51:03.147 回答
0

从 Storyboard 将您的 SecondViewController 嵌入 TabBar。选择您的控制器并转到编辑器 -> 嵌入 -> TabBar 控制器!我来自我的手机..对不起,如果我有任何拼写错误!

于 2012-11-08T09:45:54.450 回答
0

在应用程序方法中使用这种类型的方法AppDelegate.m和属性合成UITabBarController并存储视图控制器数组,didFinishLaunchingWithOptions只需将 navigationViewController 分配为 RootViewController,如下所示。

RootViewController *masterViewController = [[[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil] autorelease];
    self.navigationController = [[[UINavigationController alloc] initWithRootViewController:masterViewController] autorelease];

之后,当您想将 TabBar 添加到当时的任何视图时,请像这样调用此波纹管方法..

[appDelegate addTabBarControllerInwindow];

-(void)addTabBarControllerInwindow 
{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1.0];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.window cache:YES];
    
    [self.navigationController.view removeFromSuperview];
    [self.window addSubview:[tabBarController view]];//tabBarController.view
    [UIView commitAnimations];
}
于 2012-11-08T09:56:04.570 回答
0

像这样的东西应该可以解决问题(不使用ARC):

//vc1, vc2, vc3 = your view controllers
NSArray *viewControllersArray = [NSArray arrayWithObjects:vc1,vc2,vc3, nil];    
UITabBarController *tabBarController = [[UITabBarController alloc] init];
[tabBarController setViewControllers:viewControllersArray];
[self.navigationController pushViewController:tabBarController animated:YES];
[tabBarController release];

您要做的是创建 UITabBarController 并将其沿导航堆栈推送。

于 2012-11-08T10:12:46.927 回答
-1

使用选项卡栏控制器和要隐藏选项卡栏使用代码的视图控制器的 ViewDidLoad 方法创建一个应用程序:

        [self.tabBarController.tabBar setHidden:YES];

并且不要忘记使用相同的代码来取消隐藏选项卡栏,替换 NO 而不是 YES 用于您想要显示选项卡栏的视图控制器。

于 2012-11-08T09:49:53.367 回答