繁体   English   中英

从RootViewController到TabBarViewController

[英]RootViewController to TabBarViewController

在Xcode 4.5中使用与不同选项卡视图链接的根视图控制器上的多个按钮的方法是什么?

我在主屏幕上有4个按钮,我希望流程像当我敲击button1时一样,它应该转到tab1,就像当我敲击button2时应该打开tab2一样。

我该怎么办?

虚拟代码忽略此。

{
   tabBarController.viewControllers = controllers;
    window.rootViewController = tabBarController;

}

只需创建4个viewControllers并将以下代码附加到应用程序委托方法中

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    UIViewController *viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil] autorelease];
    UIViewController *viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil] autorelease];
    UIViewController *viewController3 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil] autorelease];
    UIViewController *viewController4 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil] autorelease];
    self.tabBarController = [[[UITabBarController alloc] init] autorelease];
    self.tabBarController.viewControllers = @[viewController1, viewController2,viewController3,viewController4];
    self.window.rootViewController = self.tabBarController;

你可以像波纹管一样做..

首先在AppDelegate类中创建UITabBarController对象,然后在applicationDidFinishLaunching:方法中AppDelegate波纹管。

self.tabBarController = [[[UITabBarController alloc] init] autorelease];
self.tabBarController2 = [[[UITabBarController alloc]init]autorelease];
self.tabBarController3 = [[[UITabBarController alloc]init]autorelease];

创建用于将不同选项卡设置为RootViewController的方法后,如下所示...

-(void)setRootViewControllerTab1{

    UIViewController *viewController1, *viewController2;
    UINavigationController *navviewController1 , *navviewController2,;

    viewController1 = [[[HomeViewController alloc] initWithNibName:@"viewController1" bundle:nil] autorelease];
    navviewController1=[[UINavigationController alloc]initWithRootViewController:viewController1];
    navviewController1.title = @"Title1";


    viewController2 = [[[HowItWorksViewController alloc] initWithNibName:@"viewController2" bundle:nil] autorelease];
    navviewController2=[[UINavigationController alloc]initWithRootViewController:viewController2];
    navviewController2.title = @"Title2";
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:navviewController1, navviewController2, nil];

    self.window.rootViewController = self.tabBarController;

    [self.window makeKeyAndVisible];
}
-(void)setRootViewControllerTab2{

    UIViewController *viewController3, *viewController4;
    UINavigationController *navviewController3 , *navviewController4;
    /////TAB 2/////***********
    viewController3 = [[[CUHomeViewController alloc] initWithNibName:@"viewController3" bundle:nil] autorelease];
    navviewController3=[[UINavigationController alloc]initWithRootViewController:viewController3];
    navviewController3.title = @"Title3";

    viewController4 = [[[CUFavouritiesViewController alloc] initWithNibName:@"viewController4" bundle:nil] autorelease];
    navviewController4=[[UINavigationController alloc]initWithRootViewController:viewController4];
    navviewController4.title = @"Title4";
    self.tabBarController2.viewControllers = [NSArray arrayWithObjects:navviewController3, navviewController4, nil];

    self.window.rootViewController = self.tabBarController2;

    [self.window makeKeyAndVisible];
}

用下面的AppDelegate对象调用上述方法...

例如:此时在方法中单击的button1编写此代码...

- (IBAction)btn1_Clicked:(id)sender{
        AppDelegate *objApp = (AppDelegate *)[[UIApplication sharedApplication] delegate];
        [objApp setRootViewControllerTab1];
}
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{
 UIViewController *viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil] autorelease]; 
    UIViewController *viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil] autorelease]; 
    UIViewController *viewController3 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil] autorelease]; 
    UIViewController *viewController4 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil] autorelease]; 
    self.tabBarController = [[[UITabBarController alloc] init] autorelease]; self.tabBarController.viewControllers = @[viewController1, viewController2,viewController3,viewController4]; 
    self.window.rootViewController = self.tabBarController;
}

创建一个这样的标签栏控制器

用下面的AppDelegate对象调用上述方法...

例如:此时在方法中单击的button1编写此代码...

- (IBAction)btn1_Clicked:(id)sender{
    AppDelegate *objApp = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    objApp.tabbarcontroller.selectedindex = 2;
}

您可以更改selectedIndex

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM