0

我从过去两天开始面临这个问题,但可以找到任何解决方案。有人可以帮忙吗。这是用于 TabBar 视图控制器的代码片段。

//设置标签栏

NSMutableArray *tabBarViewControllers = [[NSMutableArray alloc] initWithCapacity:5];

self.tabBarController = [[UITabBarController alloc] init];

[tabBarController

 setDelegate:self];

    UINavigationController *navController = nil;

    NSArray *vcArray = [self papulateViewControllers];

// SetViewController for tab Bar

-(NSArray *) papulateViewControllers{
    BrowseViewController *browseVC = [[BrowseViewController alloc] initWithNibName:@"BrowseViewController" bundle:nil];

    AlbumViewController *albumVC = [[AlbumViewController alloc] initWithNibName:@"AlbumViewController" bundle:nil];


    SubmitStep1VC *submitVC = [[SubmitStep1VC  alloc] initWithNibName:@"SubmitStep1VC" bundle:nil];
    // SubmitStep1VC *submitVC = [[SubmitStep1VC  alloc] initWithNibName:@"SubmitStep1_iPhone5.xib" bundle:[NSBundle mainBundle]];

    WallViewController *wallVC = [[WallViewController  alloc] initWithNibName:@"WallViewController" bundle:nil];

    OptionVC *optionVC = [[OptionVC alloc] initWithNibName:@"OptionVC" bundle:nil];


    sliderVCRef = [[SliderVC alloc] initWithNibName:@"SliderVC" bundle:nil];

    //Navigation Controllers
    UINavigationController *browseNavController = [[UINavigationController alloc] initWithRootViewController: browseVC];
    [browseNavController setNavigationBarHidden:YES];

    UINavigationController *albumNavController = [[UINavigationController alloc] initWithRootViewController: albumVC];
    [albumNavController setNavigationBarHidden:YES];

    UINavigationController *submitNavController = [[UINavigationController alloc] initWithRootViewController: submitVC];
    [submitNavController setNavigationBarHidden:YES];

    UINavigationController *wallNavController = [[UINavigationController alloc] initWithRootViewController: wallVC];
    [wallNavController setNavigationBarHidden:YES];

    UINavigationController *optionNavController = [[UINavigationController alloc] initWithRootViewController: optionVC];
    [optionNavController setNavigationBarHidden:YES];

    DDMenuController *browseMenuController = [[DDMenuController alloc] initWithRootViewController:browseNavController];

    self.menuController = browseMenuController;
    self.menuController.leftViewController = sliderVCRef;

    DDMenuController *albumMenuController = [[DDMenuController alloc] initWithRootViewController:albumNavController];
    albumMenuController.leftViewController = sliderVCRef;

    DDMenuController *submitMenuController = [[DDMenuController alloc] initWithRootViewController:submitNavController];
    submitMenuController.leftViewController = sliderVCRef;

    DDMenuController *wallMenuController = [[DDMenuController alloc] initWithRootViewController:wallNavController];
    wallMenuController.leftViewController = sliderVCRef;

    DDMenuController *optionMenuController = [[DDMenuController alloc] initWithRootViewController:optionNavController];
    optionMenuController.leftViewController = sliderVCRef;

/// Works fine if i uncomment this line and comment next line of code (Passing Viewcontrollers is fine )

//   return [NSArray arrayWithObjects:self.menuController, albumVC, submitVC, wallVC, optionVC, nil];


////*******  issue in case i use this line   (Passing menuController creates issue of Tabbar )

    return [NSArray arrayWithObjects:self.menuController, albumMenuController, submitMenuController, wallMenuController, optionMenuController, nil];

////////////

}

当我尝试从 TabBarController 上方的任何视图推送到任何视图控制器时,标签栏没有隐藏。例子

grandPrizeVC.hidesBottomBarWhenPushed = YES;

它不断向我显示标签栏。如果我尝试 appDelegate.tabbarcontroller.tabbar.hidden = YES;它会显示在新 VC 的黑色底栏上。

4

2 回答 2

0

您的应用程序正在执行您已实施的操作。您正在将滑动菜单视图控制器作为子视图控制器添加到标签栏控制器,当然,它不会隐藏。隐藏标签栏的一些建议: 1. 将标签栏控制器作为模态添加到您的 DDMenuController 2. 编写一些方法来隐藏/显示标签栏(搜索隐藏标签栏会给您答案,或者您可以遍历标签栏控制器视图的子视图找到标签栏并隐藏它)。祝你好运!

于 2013-06-28T11:46:14.067 回答
0

以下为我工作:

显示标签栏:

+ (void) showTabBar{

    MyAppDelegate* appDelegate = (MyAppDelegate *) [[UIApplication sharedApplication]delegate];
    UITabBar *tabBar = appDelegate.tabBarController.tabBar;
    UIView *parent = tabBar.superview; // UILayoutContainerView
    UIView *content = [parent.subviews objectAtIndex:0];  // UITransitionView
    UIView *window = parent.superview;
    CGRect tabFrame = tabBar.frame;
    tabFrame.origin.y = CGRectGetMaxY(window.bounds) - CGRectGetHeight(tabBar.frame);
    tabBar.frame = tabFrame;

    CGRect contentFrame = content.frame;
    contentFrame.size.height -= tabFrame.size.height;
}

隐藏标签栏:

+(void) hideTabBar{
   MyAppDelegate* appDelegate = (MyAppDelegate *) [[UIApplication sharedApplication]delegate];
    UITabBar *tabBar = appDelegate.tabBarController.tabBar;
    UIView *parent = tabBar.superview; // UILayoutContainerView
    UIView *content = [parent.subviews objectAtIndex:0];  // UITransitionView
    UIView *window = parent.superview;

    [UIView animateWithDuration:0.01
                     animations:^{
                         CGRect tabFrame = tabBar.frame;
                         tabFrame.origin.y = CGRectGetMaxY(window.bounds);
                         tabFrame.origin.y +=20;
                         tabBar.frame = tabFrame;
                         content.frame = window.bounds;
                     }];
}
于 2013-07-08T06:56:04.273 回答