【问题标题】:How to hide 'Back' button on navigation bar on iPhone?如何隐藏 iPhone 导航栏上的“返回”按钮?
【发布时间】:2010-10-11 11:34:49
【问题描述】:

我添加了一个导航控件来在我的应用中的视图之间切换。但有些视图不应该有“返回”(前一个标题)按钮。关于如何隐藏后退按钮的任何想法?

【问题讨论】:

    标签: ios objective-c iphone navigation uinavigationcontroller


    【解决方案1】:

    目标-C:
    self.navigationItem.hidesBackButton = YES;

    斯威夫特:
    navigationItem.hidesBackButton = true

    【讨论】:

    • @user8170 如何隐藏导航栏左侧的barbuttonitem ..?
    • 您无法通过self.navigationItem.leftBarButtonItem = nil; 隐藏后退按钮。如果你明确设置了leftbarbuttonitem,你可以使用self.navigationItem.leftBarButtonItem = nil;self.navigationItem.hidesBackButton = YES; 将隐藏返回按钮项
    • 在 iOS 7 中,self.navigationItem.leftBarButtonItem = nil;从 viewDidLoad、viewWillAppear 或 viewDidAppear 发出时不影响后退按钮。这行代码确实在 viewdidLoad 中工作:self.navigationItem.hidesBackButton = YES;
    • 不确定这是否有帮助,但“自我”始终是一个视图控制器,它显示在导航控制器堆栈的顶部。
    • self.navigationItem.hidesBackButton = YES;在 viewDidLoad 中为我工作,ios 7
    【解决方案2】:

    最好的办法是把它们结合起来,这样即使你手动设置它也会隐藏后退按钮:

    self.navigationItem.leftBarButtonItem=nil;
    self.navigationItem.hidesBackButton=YES;
    

    【讨论】:

    • 回答user716216,他用一句话解释。第二行代码适用于默认情况。如果您自己创建并添加了按钮,则第一行代码有效。
    【解决方案3】:

    用下面的代码隐藏后退按钮...

    [self.navigationItem setHidesBackButton:YES animated:YES];
    

    [self.navigationItem setHidesBackButton:YES];
    

    另外,如果您有自定义 UINavigationBar,请尝试以下代码

    self.navigationItem.leftBarButtonItem = nil;
    

    【讨论】:

    • 在任何类中,当您使用该代码时,该类的导航栏上的后退按钮将隐藏...
    【解决方案4】:

    Swift 中:

    将此添加到控制器

    override func viewDidLoad() {
        super.viewDidLoad()
        self.navigationItem.setHidesBackButton(true, animated: false)
    }
    

    【讨论】:

      【解决方案5】:

      使用代码:

       self.navigationItem.backBarButtonItem=nil;
      

      【讨论】:

      【解决方案6】:

      在 UIViewController 的 viewDidLoad 函数中使用代码:

      self.navigationItem.hidesBackButton = YES;
      

      【讨论】:

        【解决方案7】:

        不要忘记您需要在具有导航控制器的对象上调用它。例如,如果您有导航控制器推送带有 RootViewController 的选项卡栏控制器,则在 RootViewController 上调用 self.navigationItem.hidesBackButton = YES 将无济于事。您实际上必须致电self.tabBarController.navigationItem.hidesBackButton = YES

        【讨论】:

          【解决方案8】:

          在您的视图控制器中添加此代码

          UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
          UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
          self.navigationItem.leftBarButtonItem = btnL;
          

          【讨论】:

            【解决方案9】:

            不要忘记我们现在有滑动到后退的手势。您可能也想删除它。 如有必要,请不要忘记重新启用它。

            if ([self.navigationItem respondsToSelector:@selector(hidesBackButton)]) {
                self.navigationItem.hidesBackButton = YES;
            }
            
            if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
                self.navigationController.interactivePopGestureRecognizer.enabled = NO;
            }
            

            【讨论】:

            • 如果没有这个很多没有"back button" 的控制器将被启用 :) 另外请注意,一旦用户离开当前场景,您需要重新启用interactivePopGestureRezognizer
            【解决方案10】:

            对我来说,上述方法似乎都不起作用,它没有视觉效果。我正在使用带有“嵌入”在导航控制器中的视图的情节提要。

            然后我在代码级别添加我的 menuItems,由于某种原因,“backButton”在可视化调试视图层次结构时可见,并且我的 menuItem 图标显示在不可见的“后退按钮”下方。

            我按照各种钩子方法的建议尝试了设置,但没有效果。然后我尝试了一种更野蛮的方法并迭代了同样没有效果的子视图。

            我检查了我的图标大小,似乎没问题。 在参考了他的苹果人机界面指南后,我确认我的图标是正确的。 (在我的情况下小 1 像素 24px 48px 72px)。

            最奇怪的部分是实际的修复......

            在添加 BarButton 项时,给它一个至少包含一个字符的标题,在我的例子中是一个空格字符。

            希望这对某人有所帮助。

            //left menu - the title must have a space
            UIBarButtonItem *leftButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " <--THE FIX 
                                                                                style:UIBarButtonItemStylePlain
                                                                              target:self
                                                                              action:@selector(showMenu)];
            leftButtonItem.image = [UIImage imageNamed:@"ic_menu"];
            
            [self.navigationItem setLeftBarButtonItem:leftButtonItem];
            

            【讨论】:

              【解决方案11】:

              当我设置时,它并不是在所有情况下都适合我

              self.navigationItem.hidesBackButton = YES;

              在 viewWillAppear 或 ViewDidLoad 中,但当我在 viewController 的 init 中设置它时效果很好。

              【讨论】:

                【解决方案12】:

                试试这个 - self.navigationController?.navigationItem.hidesBackButton = true

                【讨论】:

                  【解决方案13】:

                  在 c# 或 Xamarin.ios 中, this.NavigationItem.HidesBackButton = true;

                  【讨论】:

                    【解决方案14】:
                    navigationItem.leftBarButtonItem = nil
                    navigationItem.hidesBackButton = true
                    

                    如果您在 didLoad 或 loadView 中使用此代码块,但可以正常工作但不能正常工作。如果您仔细观察,您会发现当您的视图加载时,后退按钮隐藏了。看起来很奇怪。

                    什么是完美的解决方案?

                    BarButtonItem 组件从 componentView (Command + Shift + L) 添加到目标 viewControllers 导航栏。

                    从右侧面板中选择 BarButtonItem set Title = " "

                    【讨论】:

                      【解决方案15】:
                      self.navigationItem.setHidesBackButton(true, animated: true)
                      

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2020-04-06
                        • 1970-01-01
                        • 1970-01-01
                        • 2012-07-03
                        相关资源
                        最近更新 更多