【问题标题】:Add view in tab bar project - xcode在标签栏项目中添加视图 - xcode
【发布时间】:2013-04-17 16:46:15
【问题描述】:

我有一个由标签栏制作的 x-code 项目。在 AppDelegate.m 上,我为每个视图创建了三个按钮:

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
UIViewController *viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil] autorelease];
UIViewController *viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil] autorelease];
UIViewController *viewController3=[[[ThirdViewController alloc]initWithNibName:@"ThirdViewController" bundle:nil]autorelease];
self.tabBarController = [[[UITabBarController alloc] init] autorelease];
self.tabBarController.viewControllers = @[viewController1, viewController2,viewController3];
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
return YES;

当我在第一个视图上时,我想创建一个调用另一个视图的按钮:

-(IBAction)btnPush{
 [[self navigationController] pushViewController:newView animated:YES];
}

但是当新视图出现时,它会覆盖底部的标签栏。我该如何解决这个问题?

【问题讨论】:

    标签: objective-c xcode view tabs tabbar


    【解决方案1】:

    UITabBarController 中添加UIViewController 而不是添加UINavigationController,如下所示

    UIViewController *viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil] autorelease];
    UIViewController *viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil] autorelease];
    UIViewController *viewController3=[[[ThirdViewController alloc]initWithNibName:@"ThirdViewController" bundle:nil]autorelease];
    

    现在将您的 ViewController 添加到 NavigationController

    UINavigationController *navController1 = [[UINavigationController alloc] initWithRootViewController:viewController1];
    UINavigationController *navController2 = [[UINavigationController alloc] initWithRootViewController:viewController2];
    UINavigationController *navController3 = [[UINavigationController alloc] initWithRootViewController:viewController3];
    
    self.tabBarController.viewControllers = @[navController1, navController2,navController3];
    

    它会在 TabBarController 中添加导航控制器

    【讨论】:

    • 有没有办法在没有导航控制器的情况下做同样的事情?
    • 我不知道是否有,我不确定。但很可能没有办法。
    猜你喜欢
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多