0

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

[self presentViewController:homeNavigationController 动画:没有完成: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];

}}
4

2 回答 2

1

您正在以模态方式呈现 homeNavigationController ——您所看到的是模态视图控制器的正常行为,也就是说,它们占据了包括标签栏在内的整个屏幕。如果您想查看标签栏,请不要使用模态演示。

于 2013-03-20T18:26:14.297 回答
1

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

1) 在 AppDelegate 中定义 YourTabBarController 对象

2) 并从 YourTabBarController 的对象中呈现 ViewController 而不是像“自我”一样

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

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

于 2013-03-20T19:44:15.647 回答