【问题标题】:UINavigationController blocks UITabBar with SWRevealViewControllerUINavigationController 使用 SWRevealViewController 阻止 UITabBar
【发布时间】:2025-12-04 18:25:02
【问题描述】:

开发具有滑出式菜单和标签栏的应用程序,类似于 facebook。我的问题是 SWRevealController 工作得很好,一切都很好。但是,标签栏按钮在视图更改后会隐藏。看看我的故事板层次结构:https://drive.google.com/a/stolaf.edu/file/d/0BxPvzAFa0lPjclp4c01Jb1RsQ1U/view

这是推送每个视图的 segue 推送代码。

- (void) prepareForSegue: (UIStoryboardSegue *) segue sender: (id) sender
{
    // Set the title of navigation bar by using the menu items
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

    UINavigationController *destViewController = (UINavigationController*)segue.destinationViewController;
    // Set the photo if it navigates to the PhotoView


    if ([segue.identifier isEqualToString:@"tab"]) {


        Tabbar *photoController = (Tabbar*)segue.destinationViewController;

        photoController.name = [NSString stringWithFormat:@"%ld",(long)indexPath.row];
    }




    if ( [segue isKindOfClass: [SWRevealViewControllerSegue class]] ) {


        SWRevealViewControllerSegue *swSegue = (SWRevealViewControllerSegue*) segue;

        swSegue.performBlock = ^(SWRevealViewControllerSegue* rvc_segue, UIViewController* svc, UIViewController* dvc) {


            UINavigationController* navController = (UINavigationController*)self.revealViewController.frontViewController;
            [navController setViewControllers: @[dvc] animated: NO ];

            [self.revealViewController setFrontViewPosition: FrontViewPositionLeft animated: YES];
        };

    }

}

不完全确定,但我认为在 segue 中创建的导航控制器是添加到标签栏上的导航控制器,因此完全隐藏了所有标签栏按钮。有什么想法吗?

【问题讨论】:

  • 你拿这个,你可以在 didselectrowatindexpath

标签: ios objective-c uitableview segue swrevealviewcontroller


【解决方案1】:

我和你有同样的问题,我已经写了这段代码。我们必须先获取 taBarController,然后是导航控制器。

if ( [segue isKindOfClass: [SWRevealViewControllerSegue class]] ) {
    SWRevealViewControllerSegue *swSegue = (SWRevealViewControllerSegue*) segue;

    swSegue.performBlock = ^(SWRevealViewControllerSegue* rvc_segue, UIViewController* svc, UIViewController* dvc) {

        UITabBarController *tab = (UITabBarController *)self.revealViewController.frontViewController;
        int index = tab.selectedIndex;
        UINavigationController *nav = [tab viewControllers][index];
//        [nav pushViewController:dvc animated:YES];
        [nav setViewControllers: @[dvc] animated:NO];
        [self.revealViewController setFrontViewPosition: FrontViewPositionLeft animated: YES];
    };

}

【讨论】:

  • 这是一个答案吗?还是说你有同样的问题?
  • 最佳答案谢谢
【解决方案2】:

我遇到了同样的问题.. 做一个简单的

self.view.tabbarcontroller.tabbar.hidden=NO;

为我做了诀窍,

在特定视图控制器的视图中添加这个加载方法,它会运行良好。

【讨论】:

  • 感谢您的回复。我试过了,但它把标签栏全部隐藏起来了。我想要它,以便导航控制器不会阻止标签栏。