切换控制器时标签栏消失
Posted
技术标签:
【中文标题】切换控制器时标签栏消失【英文标题】:Tab bar disappearing when switching controller 【发布时间】:2013-03-20 18:22:41 【问题描述】:这段代码可以完美地切换视图控制器,除了标签栏控制器消失了。 现在我尝试了这段代码的许多不同变体
[self presentViewController:homeNavigationController Animation: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];
【问题讨论】:
你问了很多关于Tab Bars的问题,所有这些似乎都表明对UITabBarController缺乏了解。也许你会很好地阅读它的文档:developer.apple.com/library/ios/#documentation/uikit/reference/… 此外,Apple 甚至提供了一个“旨在展示如何构建基于标签栏的 iOS 应用程序的应用程序”,Tabster:developer.apple.com/library/ios/#samplecode/Tabster/… 【参考方案1】:您正在以模态方式呈现 homeNavigationController —— 您所看到的是模态视图控制器的正常行为,也就是说,它们占据了包括标签栏在内的整个屏幕。如果您想查看标签栏,请不要使用模态演示。
【讨论】:
好的,展示视图控制器的最佳方式是什么。推?因为我尝试过但会导致问题。 @FelixJones,这完全取决于您要做什么。如果不详细了解您的应用程序的结构以及您要完成的工作,我真的无法为您提供建议。 [self.navigationController pushViewController:homeNavigationController animated:NO];我尝试了这种方法,但没有任何反应。 @FelixJones,如果不知道您的应用程序结构,这对我来说毫无意义。该代码在哪个控制器中?您需要编辑您的问题以显示您在哪里拥有哪些控制器,以及您正在尝试做什么。【参考方案2】:我通过以下方式解决了这个问题:
1) 在 AppDelegate 中定义 YourTabBarController 对象
2) 和来自 YourTabBarController 的对象的 presentViewController 而不是像 'self' 这样的
[appDelegateObj.yourTabBarObj presentViewController:homeNavigationController animated:NO completion:nil];];
确保您的 Appdelegate 对象已初始化。
【讨论】:
希望你理解,如果不让我知道我会发布详细的代码。以上是关于切换控制器时标签栏消失的主要内容,如果未能解决你的问题,请参考以下文章