如何从ViewController修复Segue到Storyboard Tabbar控制器以编程方式不显示Tabbar菜单?

时间:2014-06-06 10:05:47

标签: objective-c uiviewcontroller uitabbarcontroller

我目前看到的是当我向另一个StoryBo菜单中的另一个StoryBoard ViewController发送时。它显示了ViewController但没有显示菜单标签栏。

enter image description here

这是我的代码

- (IBAction)endCall:(id)sender {

    NSLog(@"End Call");

    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"callHistory"];
    [self presentViewController:vc animated:YES completion:nil];

}

注意:用户最近历史视图控制器仅包含ViewController .m并链接到Storyboard上的Storyboard Tabbar Controller,它不包含TabbarController类

1 个答案:

答案 0 :(得分:0)

我建议您使用UITabBarController作为标签栏,然后转到标签栏视图控制器。然后在tabBarViewController viewdidload()方法中,您可以选择要显示的选项卡。

我个人会在tabBarViewController.h中声明一个名为“backFromStart”的BOOL属性,如此 - >

@property (nonatomic, assign) BOOL backFromStart;

然后在startCellViewController的prepareForSegue :()方法中设置此BOOL,如下所示:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
  if ([[segue identifier] isEqualToString:@"backToTabBarVC"])
    {
       TabBarVC *destinationVC = segue.destinationViewController;
       destinationVC.backFromStart = YES;
       // Pass any other data to the callHistoryVC if required like so->
       callHistoryVC *historyVC = [destinationVC.viewControllers objectAtIndex:0]; // objectAtIndex 0 as this is your first and only tab.

    }
}

如果BOB“backFromStart”在tabBarController.m中设置了viewdidload()方法,最后选择选项卡:

if(backFromStart) {
  backFromStart = NO;
  [self setSelectedIndex:0];
}

注意:既然你只有一个标签,那么BOOL并不是真正需要的,只是在你决定添加更多标签的情况下!