Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 按下UIViewController时隐藏UIAbbarController的选项卡栏_Iphone_Objective C_Ios_Uitabbarcontroller_Uitabbar - Fatal编程技术网

Iphone 按下UIViewController时隐藏UIAbbarController的选项卡栏

Iphone 按下UIViewController时隐藏UIAbbarController的选项卡栏,iphone,objective-c,ios,uitabbarcontroller,uitabbar,Iphone,Objective C,Ios,Uitabbarcontroller,Uitabbar,我有一个选项卡栏应用程序。 这是启动代码 self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. [self.window makeKeyAndVisible]; self.tabBarController=[[UITabBarCon

我有一个选项卡栏应用程序。 这是启动代码

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    // Override point for customization after application launch.
    [self.window makeKeyAndVisible];



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


    StartViewController *startViewController=[[StartViewController alloc] initWithNibName:@"StartViewController" bundle:nil];
    NavRootViewController *navRootViewController=[[NavRootViewController alloc] initWithNavControllerWithSubViewController:startViewController];

    HelpViewController *helpViewController=[[HelpViewController alloc] initWithNibName:@"HelpViewController" bundle:nil];

    SettingsViewController *settingsViewController=[[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];

    AboutUsViewController *aboutUsViewController=[[AboutUsViewController alloc] initWithNibName:@"AboutUsViewController" bundle:nil];

    [self.tabBarController setViewControllers:[NSArray arrayWithObjects: navRootViewController, helpViewController, settingsViewController, aboutUsViewController, nil]];



    [[UIApplication sharedApplication] setStatusBarHidden:YES];
    self.window.backgroundColor = [UIColor whiteColor];
    self.window.rootViewController=self.tabBarController;
使用4个选项卡栏选项卡启动应用程序。 在用户按下第一个选项卡的导航控制器的根视图控制器中的开始按钮后,将调用此操作

-(IBAction)startPressed:(id)sender
{
    NSLog(@"startPressed: called");


    RootViewController *vController=[[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
    [self.navigationController pushViewController:vController animated:YES];

}
这很好,但我需要隐藏我的RootViewController的选项卡栏 当Pushed不起作用时,属性HidesBottomBar不起作用。
请帮帮我,怎么做?

如果不希望主视图显示选项卡栏,则不应将其推到导航控制器上。这样做会导致应用程序假定此新控制器是导航层次结构的一部分。最好的解决方案可能是在RootViewController上启动应用程序,然后以模式显示导航控制器。使用完导航控制器后,让它在自身上调用dismissModalViewController。

是的,您必须在窗口上添加modalview,而不是在选项卡栏的viewcontroller上。 试试像。。将AppDelegate的对象设置为: AppDelegate*AppDelegate=[[UIApplication sharedApplication]委托]; 然后在下一行添加

[appDelegate.window.rootviewcontroller.view presentModalViewController:vController animated:YES];
或者将代码[self-presentModalViewController:vController animated:YES]添加到选项卡栏的firstviewcontroller的ViewDidDisplay中

您是如何解决问题的?我也想知道这一点。

我希望这能帮助您:

- (void)viewWillAppear: (BOOL)animated 
{ 
    self.hidesBottomBarWhenPushed = YES; 
}

使用此代码解决:

-(IBAction)startPressed:(id)sender
{
    NSLog(@"startPressed: called");

    RootViewController *vController=[[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
    UINavigationController *navController=[[UINavigationController alloc] initWithRootViewController:vController];
    [vController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
    [((AppDelegate *)[UIApplication sharedApplication].delegate).tabBarController presentModalViewController:navController animated:YES];
}

感谢@iPhone Developer

将您的根视图显示为modalviewcontroller。这会将选项卡栏隐藏在它下面。推送时您在哪里分配了hidesbottombars?@iPhoneDeveloper如果我调用[self-presentModalViewController:vController animated:YES]选项卡栏将保持可见。有什么问题吗。我做错了什么?@iPhoneDeveloper我解决了这个问题。请用您的评论单独回答。是的,您必须在窗口上添加modalview,而不是在tabBar的viewcontroller上。我给出以下答案。有点难以理解:为了避免误解,我将再次解释层次结构。应用程序从tab bar开始,有4个选项卡,第一个选项卡已选定。应用程序从tab bar开始,第一个选项卡已选定选择了第一个选项卡的4个选项卡。这是带有根StartViewController的UINavigationController。接下来我该怎么办?我需要一个导航栏在视图控制器中移动,但除了第一个选项卡外,选项卡栏必须隐藏在第一个选项卡中的所有视图控制器中。因此,要切换到另一个选项卡,我需要返回StartViewController并切换到另一个选项卡;这不是选项卡栏控制器的用途。然而,如果你真的,真的想让你的程序像这样工作,看看iPhone开发者的评论。
UIViewController *nextViewController = [[UIViewController alloc] initWithNibName:@"NextViewController" bundle:[NSBundle mainBundle]];

// hide UITabbarController
nextViewController.hidesBottomBarWhenPushed = YES;

[self.navigationController pushViewController:nextViewController animated:YES];
[nextViewController release];