0

以下のようなものを作成したいと思います。RootView には TabBar がありません。2 番目のビューからは 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;
}

UITabBarしかし、SecondViewController から tabBarControllerを使用するにはどうすればよいですか?

4

7 に答える 7

1

2番目のビューのオブジェクトを作成し、タブバーコントローラーでビューをプッシュします

于 2012-11-08T09:51:50.150 に答える
0

Storyboard から SecondViewController を TabBar に埋め込みます。コントローラーを選択し、エディター -> 埋め込み -> TabBar コントローラーに移動します。私は私の携帯からです..スペルミスがあればごめんなさい!

于 2012-11-08T09:45:54.450 に答える
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 に答える
0

サンプルの場合 appdelegate に loadnewview メソッドを記述します。以下に示すように、1 つ目のビュー コントローラーのボタン アクションまたは任意のオブジェクト アクションに buttonPressed メソッドを使用して、2 つ目のビュー コントローラーからタブ バーを表示します。サンプル用に2錠取ったので容量は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

You need to push your Tabbar controller's object. Initialize your tab bar controller's object and add all other controller objects to the tabbar controller's viewcontroller array.

On button action:-

1> Initialize tab bar controller and suppose you name its object as objTab;

2> objTab.viewcontrollers = [NSArray arrayWithObjects:..] ---> Objects of all viewcontrollers that are a part of your tab bar controller. Thus all objects need to be created first.

3> self.navigationcontroller pushViewController: objTAb

于 2012-11-08T09:51:03.147 に答える
0

このタイプのメソッドを使用しAppDelegate.mてプロパティを合成UITabBarControllerし、viewcontroller の配列をその中に格納します。アプリケーション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 に答える
-1

タブ バー コントローラーを使用してアプリケーションを作成し、タブ バーを非表示にするビュー コントローラーの ViewDidLoad メソッドでコードを使用します。

        [self.tabBarController.tabBar setHidden:YES];

また、タブ バーを表示するビュー コントローラーの YES の代わりに同じコードを使用して、タブ バーを再表示することを忘れないでください。

于 2012-11-08T09:49:53.367 に答える