如何在iOS中禁用导航栏按钮项

Sra*_*van 25 uinavigationbar ios ios7

我创建了一个导航控制器.在第二个视图(推送)中,我有一些webservice调用并放置一个叠加视图和设置

self.view.userInteractionEnabled = NO ;

一旦Web服务调用完成,那么我将恢复

self.view.userInteractionEnabled = YES ;

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

我试过用self.navigationItem.backBarButtonItem.enabled = NO.但我仍然可以点击按钮并导航到第一个屏幕.如何禁用这两个按钮?

Vij*_*com 51

试试这个

推荐的

self.navigationItem.leftBarButtonItem.enabled = NO;

self.navigationItem.rightBarButtonItem.enabled = NO;
Run Code Online (Sandbox Code Playgroud)

或者简单地禁用

在Edge案例上

self.view.window.userInteractionEnabled = NO;
Run Code Online (Sandbox Code Playgroud)

更新: 最近Apple不允许后退按钮启用/禁用.而不是我们可以隐藏它.

self.navigationItem.hidesBackButton = YES;
Run Code Online (Sandbox Code Playgroud)

  • 两者都没用.我仍然可以点击按钮并导航到第一个视图控制器. (2认同)

Jay*_*ayu 15

如果您正在运行,可以执行以下操作 Swift

self.navigationItem.rightBarButtonItem?.enabled = true
Run Code Online (Sandbox Code Playgroud)

此代码段将禁用该按钮.


jbo*_*ziz 8

只需停用您的UINavigationController视图和导航栏互动:

self.navigationController.navigationBar.userInteractionEnabled = NO;
self.navigationController.view.userInteractionEnabled = NO;
Run Code Online (Sandbox Code Playgroud)

并在需要时启用它:

self.navigationController.navigationBar.userInteractionEnabled = YES;
self.navigationController.view.userInteractionEnabled = YES;
Run Code Online (Sandbox Code Playgroud)

  • 这没有用.我仍然可以点击按钮并导航到frist视图控制器. (2认同)

Obj*_*eTC 7

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

self.navigationItem.setHidesBackButton(true, animated: false)
Run Code Online (Sandbox Code Playgroud)

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