切换控制器时标签栏消失

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 对象已初始化。

【讨论】:

希望你理解,如果不让我知道我会发布详细的代码。

以上是关于切换控制器时标签栏消失的主要内容,如果未能解决你的问题,请参考以下文章

标签栏和 UISearchController 出现黑屏

推回标签栏的视图控制器后标签栏消失

标签栏控制器在模态转场后消失

触摸表格视图中的单元格后标签栏消失

消失的标签栏

切换标签栏时检测选定的标签栏