ios独立导航栏 - ios设置导航栏标题




如何在iOS中禁用导航栏按钮项目 (6)

我创建了一个导航控制器。 在第二个视图(推送),我有一些web服务调用,并放置覆盖视图和设置

self.view.userInteractionEnabled = NO ;

一旦Web服务调用完成,然后我正在恢复

self.view.userInteractionEnabled = YES ;

当我这样做时,除导航栏上的按钮之外的其他每个按钮均被禁用。 如何禁用这两个导航栏按钮项目? (类似于后退按钮的按钮,弹出到第一个视图控制器和另一个按钮,提供有关帮助的信息)。

我已经尝试使用self.navigationItem.backBarButtonItem.enabled = NO 。 但是,我仍然可以点击按钮,并可以导航到第一个屏幕。 我怎样才能禁用这两个按钮?


只需禁用您的UINavigationController视图和导航栏交互:

self.navigationController.navigationBar.userInteractionEnabled = NO;
self.navigationController.view.userInteractionEnabled = NO;

并在需要时启用它:

self.navigationController.navigationBar.userInteractionEnabled = YES;
self.navigationController.view.userInteractionEnabled = YES;

尝试这个

推荐的

self.navigationItem.leftBarButtonItem.enabled = NO;

self.navigationItem.rightBarButtonItem.enabled = NO;

或简单地通过禁用

在边缘案件

self.view.window.userInteractionEnabled = NO;

更新:最近苹果不允许后退按钮启用/禁用。 相反,我们可以隐藏它。

self.navigationItem.hidesBackButton = YES;

最新的Swift:要隐藏后退按钮,您必须使用:

self.navigationItem.setHidesBackButton(true, animated: false)

注意:这可能会触发导航栏中的一个错误,当转换到没有后退按钮的视图(或者在其位置有左键按钮)时,可能会导致工件出现在隐藏的后退按钮的位置。 出现的工件或者是省略号“...”,或者堆栈上的前一个viewController的标题。 我相信这个bug与苹果自己的示例代码项目“CustomizingUINavigationBar”,CustomBackButtonViewController.m中记录的bug相关


- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;
}

我通过添加一个属性到我的viewcontroller解决了这个问题:

@property (nonatomic, strong) IBOutlet UIBarButtonItem * RightButton;

然后我将它连接到故事板上的按钮。 然后你可以设置它的属性,如:

self.RightButton.enabled=true;

一线解决方案

self.navigationController?.view.isUserInteractionEnabled = false




uinavigationbar