在导航控制器中添加标签栏控制器时隐藏后退按钮

Posted

技术标签:

【中文标题】在导航控制器中添加标签栏控制器时隐藏后退按钮【英文标题】:hide back button when tab bar controller is added in navigation controller 【发布时间】:2012-09-21 05:26:12 【问题描述】:

我有一个导航控制器 (navC) 和一个视图控制器 (ViewC),它是从根控制器推送的视图。我用代码隐藏了 ViewC 的后退按钮:

[[self navigationItem] setHidesBackButton:YES];

我在 ViewC 之后推送了标签栏控制器 (tabbarC)。在与 tabbarC 中的第一个选项卡关联的视图控制器中,我尝试使用代码隐藏后退按钮:

 [[[self tabBarController] navigationItem] setHidesBackButton:YES];

但是当我点击后退按钮时,它仍然可见;它消失了......任何人都可以帮我隐藏tabbarC中所有视图的后退按钮。

【问题讨论】:

你在哪个方法中放置了代码....是viewDidLoad吗? 使用 [[navC navigationItem] setHidesBackButton:YES]; @Spynet 我在 viewDidLoad 和 viewWillAppear 都试过了,但没有结果 您是否以编程方式添加了标签栏视图控制器? @Neo 是的,我已经以编程方式添加了它 【参考方案1】:

在您推送到 tabbarviewcontroller 时将出现的第一个视图中设置此项

-(void)viewWillAppear:(BOOL)animated
      [super viewWillAppear:animated];
      self.tabBarController.navigationItem.hidesBackButton=YES;

【讨论】:

ios 6.2 中,在这段代码之后(使用程序化 segue - 即performSegueWithIdentifier)我看到后退按钮处于非活动状态但仍然可见。事实上,这件事可能与您的导航堆栈和程序化 segues 有很大关系,所以在这种情况下要注意一点。我的建议是,如果使用 segue,请将 - setHidesBackButton 选择器调用放在源视图控制器的 - prepareForSegue 选择器中。【参考方案2】:

在 ViewC 的 viewDidLoad 中这样做:

[self.navigationController.navigationItem setHidesBackButton:YES];

同样tab选中视图控制器的viewWillAppear方法

[self.navigationController.navigationItem setHidesBackButton:YES];

【讨论】:

【参考方案3】:

在您看来,只需写下这一行..它将隐藏返回按钮.. 测试

-(void)viewWillAppear:(BOOL)animated

    [self.navigationItem setHidesBackButton:YES];

【讨论】:

以上是关于在导航控制器中添加标签栏控制器时隐藏后退按钮的主要内容,如果未能解决你的问题,请参考以下文章

可以在标签栏控制器中隐藏导航栏吗?

标签栏导航栏中的后退按钮

隐藏标签栏和导航栏

从导航栏视图控制器导航到标签栏视图控制器

使用swift在选项卡式视图中的导航栏上添加按钮

UINavigationController 仅隐藏导航栏 - 后退动画问题