切换控制器时标签栏消失

时间:2013-03-20 18:22:42

标签: iphone ios xcode object tabbar

除了标签栏控制器消失外,此代码可以完美地切换视图控制器 现在我尝试使用此代码的许多不同变体

  

[self presentViewController:homeNavigationController animated:NO completion:nil];

但它们似乎都没有正常工作。推送控制器只是将视图冻结到位。关于该做什么的任何提示?

 - (void)_tabBarItemClicked:(id)item {   
assert([item isKindOfClass:[UIButton class]]);



NSInteger selectedIndex = ((UIButton *)item).tag;

[self setSelectedIndex:selectedIndex];

[self _setSelectedItemAtIndex:selectedIndex];



NSDictionary *userInfo = @{@"index": [NSNumber numberWithInt:selectedIndex]};

[[NSNotificationCenter defaultCenter] postNotificationName:@"tabBarDidSelectItem" object:nil userInfo:userInfo];
if (selectedIndex ==2) {

    HomeViewController *homeViewController = [[HomeViewController alloc] initWithNibName:nil bundle:nil];
    UINavigationController *homeNavigationController = [[UINavigationController alloc] initWithRootViewController:homeViewController];

    [self presentViewController:homeNavigationController animated:NO completion:nil];

}}

2 个答案:

答案 0 :(得分:1)

您正在以模态方式呈现homeNavigationController - 您所看到的是模态视图控制器的正常行为,即它们接管整个屏幕,包括标签栏。如果要查看标签栏,请不要使用模态演示文稿。

答案 1 :(得分:1)

我通过以下方式解决了这个问题:

1)在AppDelegate中定义YourTabBarController对象

2)来自YourTabBarController对象的presentViewController而不是像这样的

[appDelegateObj.yourTabBarObj presentViewController:homeNavigationController animated:NO completion:nil];];

确保您的Appdelegate对象已初始化。