【问题标题】:Navigation bar not accessible when using SWRevealViewController with UITabBarController将 SWRevealViewController 与 UITabBarController 一起使用时导航栏无法访问
【发布时间】:2020-11-13 12:44:39
【问题描述】:

我使用 SWRevealViewController 和 UITabBarController(前视图控制器)设置了滑动菜单(后视图控制器)。下面是我使用的一段代码:

RearMenuViewController *rearViewController = [[RearMenuViewController alloc] init];
UINavigationController *rearNavigationController = [[UINavigationController alloc] initWithRootViewController:rearViewController];

UINavigationController *navTabController = [[UINavigationController alloc] initWithRootViewController:_tabBarController];


SWRevealViewController *revealController = [[SWRevealViewController alloc] initWithRearViewController:rearNavigationController frontViewController:navTabController];
revealController.delegate = self;
revealController.rightViewController = nil;
self.viewController = revealController;

self.window.rootViewController = revealController;

这很好用,我可以使用滑动手势在后菜单和标签栏项目之间切换。

但我无法为每个标签栏项目设置导航标题,也无法在导航栏上添加任何栏按钮。我只能看到每个标签栏项目的空白导航栏。

还想分享一下我在项目中没有使用故事板。所以,我只需要通过代码设置标题和条形按钮。

如果需要任何其他信息,请告诉我。

【问题讨论】:

  • 您忘记描述(包括代码)如何创建_tabBarController
  • 另一件事是你不应该在导航视图控制器中嵌入标签栏控制器,但你应该将它用作frontViewController。然后,每个选项卡视图控制器都应该包含在导航视图控制器本身中。
  • 感谢您的回复。实际上,您在上面的评论中提到的帖子不包含 SWRavealViewController。它只是展示了如何将导航控制器与标签栏控制器一起使用。当我想添加一个带有标签栏控制器的滑块菜单作为前视图控制器和后视图控制器时,我遇到了这个问题。

标签: ios objective-c xcode swrevealviewcontroller


【解决方案1】:

我设法访问每个标签栏项目的导航栏,如下所示:

UINavigationController *currentNav = (UINavigationController *)self.tabBarController.parentViewController;

UINavigationItem *navItem =(UINavigationItem *) [currentNav.navigationBar.items firstObject];
navItem.title = @"Dashboard";

如果我们需要为每个标签栏项目设置不同的标题,则需要在标签栏的每个项目(视图控制器)中编写此内容。

如果有更好的方法来实现这一点,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 2016-08-24
    • 1970-01-01
    • 2016-01-07
    相关资源
    最近更新 更多