移除导航按钮

Posted

技术标签:

【中文标题】移除导航按钮【英文标题】:Remove navigation button 【发布时间】:2011-02-28 10:33:48 【问题描述】:

嘿,我编写了一个类 (A),它继承了一些功能,包括导航按钮的实现。 A类既有查看模式又有编辑模式,我只想在编辑模式下显示按钮。到目前为止,我无法删除此按钮,并且我真的不想创建另一个类来进行编辑。

其他类也继承了这个功能,所以我真的不想和父母搞混了。

我用来创建按钮的代码如下:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];    
UIImage *buttonImage = [UIImage imageNamed:@"button.png"];

[button addTarget:self 
               action:@selector(buttonPressed:) 
     forControlEvents:UIControlEventTouchUpInside];

button.bounds = CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height);

[button setBackgroundImage:buttonImage forState:UIControlStateNormal];
[button setTitle:NSLocalizedString(@"BUTTON", @"") 
            forState:UIControlStateNormal];

LPRBSLabel *buttonLabel = [[LPRBSLabel alloc] initWithStyle:UICustomeButtonTitle];
[button setTitleEdgeInsets:UIEdgeInsetsMake(0.0, 0.0, -5.0, 0.0)];

button.titleLabel.font = buttonLabel.font;
[button setTitleColor:buttonLabel.textColor forState:UIControlStateNormal];
[buttonLabel release];

UIBarButtonItem *barLeftInfoButton = [[UIBarButtonItem alloc] initWithCustomView:button];
self.navigationItem.leftBarButtonItem = barLeftInfoButton;
[barLeftInfoButton release];

【问题讨论】:

【参考方案1】:

我设法解决了这个问题:

self.navigationItem.leftBarButtonItem = nil;

我有一个头脑冻结,并在按钮实际创建之前使用上述语句:-(

【讨论】:

【参考方案2】:

将 NavigationItem 的属性“hidesBackButton”设置为 yes 会更容易:

http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UINavigationItem_Class/Reference/UINavigationItem.html#//apple_ref/occ/cl/UINavigationItem

【讨论】:

该解决方案在上述代码中不起作用,因为我们正在创建一个自定义按钮并将其添加到导航栏而不是使用默认的后退按钮 self.navigationItem.hidesBackButton = YES;【参考方案3】:

要考虑的另一个选项是禁用该按钮,直到您希望它起作用为止。它将是可见的,但会变暗。

self.navigationItem.leftBarButtonItem.enabled = NO;

【讨论】:

【参考方案4】:

要从导航栏中删除按钮,只需将标签分配给按钮并编写以下代码

[[self.navigationController.navigationBar viewWithTag:0106] removeFromSuperview];

【讨论】:

以上是关于移除导航按钮的主要内容,如果未能解决你的问题,请参考以下文章

iOS 移除导航栏黑线

Android 移除导航抽屉上的阴影

使用导航组件时从 BottomNavigationView 中移除 Badge

移除少数视图控制器的导航栏边框

导航栏 removeGestureRecognizer 未删除 Guesture

NavigationService 删除 forwardstack