ChatGPT解决这个技术问题 Extra ChatGPT

如何隐藏 iPhone 导航栏上的“返回”按钮?

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


C
Carmen

Objective-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 = 是;在 viewDidLoad 中为我工作,ios 7
S
Skrew

最好的方法是将这些组合起来,因此即使您手动设置它也会隐藏后退按钮:

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

为了回答user716216,他在他的一句话解释中进行了解释。第二行代码适用于默认情况。如果您自己创建并添加了按钮,则第一行代码有效。
P
Paras Joshi

使用以下代码隐藏后退按钮...

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

或者

[self.navigationItem setHidesBackButton:YES];

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

self.navigationItem.leftBarButtonItem = nil;

在任何类中,当您使用该代码时,该类的导航栏后退按钮将隐藏...
t
tabdulradi

在斯威夫特:

将此添加到控制器

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

d
dgund

使用代码:

 self.navigationItem.backBarButtonItem=nil;

这将显示导航项的默认后退栏按钮项。 developer.apple.com/documentation/uikit/uinavigationitem/…
i
indiefr

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

self.navigationItem.hidesBackButton = YES;

T
Tyler

不要忘记您需要在具有导航控制器的对象上调用它。例如,如果您有导航控制器推送带有 RootViewController 的选项卡栏控制器,则在 RootViewController 上调用 self.navigationItem.hidesBackButton = YES 将不会执行任何操作。您实际上必须调用 self.tabBarController.navigationItem.hidesBackButton = YES


B
Bhavsar1311

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

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

B
Bruno Delgado

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

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

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

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

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

然后我在代码级别添加了我的 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];

J
Joe M

当我设置时,它在所有情况下都不适用于我

self.navigationItem.hidesBackButton = 是;

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


A
Ahil Rahesh

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


A
Anisetti Nagendra

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


a
ahmet yilmaz
navigationItem.leftBarButtonItem = nil
navigationItem.hidesBackButton = true

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

什么是完美的解决方案?

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

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

https://i.stack.imgur.com/DU1vG.png


J
James Chan
self.navigationItem.setHidesBackButton(true, animated: true)