it-swarm.com.ru

как отключить элемент кнопки панели навигации в iOS

Я создал навигационный контроллер. Во втором виде (который выдвигается) у меня есть вызов веб-службы и размещение наложения и настройки 

self.view.userInteractionEnabled = NO ;

После завершения вызова веб-службы я возвращаюсь к 

self.view.userInteractionEnabled = YES ;

Когда я делаю это, все остальные кнопки, кроме кнопок на панели навигации, отключены. Как отключить эти две кнопки панели навигации? (кнопка, аналогичная кнопке «Назад», которая появляется на первом контроллере представления, и другая кнопка, которая дает информацию о помощи).

Я пытался использовать self.navigationItem.backBarButtonItem.enabled = NO. Но все же я могу нажать на кнопку и перейти к первому экрану. Как я могу отключить эти две кнопки?

21
Sravan

Попробуй это

Рекомендуемые

self.navigationItem.leftBarButtonItem.enabled = NO;

self.navigationItem.rightBarButtonItem.enabled = NO;

Или просто отключить 

на крайнем случае

self.view.window.userInteractionEnabled = NO;

Обновление: В последнее время Apple не позволяет включить/отключить кнопку «Назад». Вместо этого мы можем это скрыть.

self.navigationItem.hidesBackButton = YES;
48
Vijay-Apple-Dev.blogspot.com

Вы можете сделать следующее, если вы работаете на Swift

self.navigationItem.rightBarButtonItem?.enabled = true

Этот фрагмент отключит кнопку.

13
Jay Mayu

Просто отключите ваш просмотр UINavigationController и взаимодействие с панелью навигации:

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

И включите его, когда вам это нужно снова:

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

Последний Swift: Чтобы скрыть кнопку возврата, вы ДОЛЖНЫ использовать:

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

Примечание. Это может вызвать ошибку в панели навигации, которая может привести к появлению артефакта вместо скрытой кнопки «Назад» при переходе к представлению, у которого нет кнопки «Назад» (или на его месте есть кнопка leftButton). Появляющийся артефакт - это либо эллипсы "...", либо заголовок предыдущего viewController в стеке. Я полагаю, что эта ошибка связана с ошибкой, задокументированной в собственном примере проекта кода Apple "CustomizingUINavigationBar", CustomBackButtonViewController.m

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

Для версии iOS 10.3, Swift 3:

self.navigationItem.rightBarButtonItem?.isEnabled = false.
1
Sagar D

Я решил это, просто добавив свойство в мой viewcontroller:

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

Затем я подключил его к кнопке на раскадровке .... Затем вы можете по желанию установить его свойства, такие как:

self.RightButton.enabled=true;
1
Sjakelien

Обновлено для Swift 3:

Если вы хотите отключить элемент кнопки панели навигации OR, вы хотите отключить отверстие UINavigationBar, т.е. все элементы, присутствующие на панели навигации, используйте следующие строки кода;

// if you want disable
self.navigationController?.navigationBar.isUserInteractionEnabled = false

// if you want enable again
self.navigationController?.navigationBar.isUserInteractionEnabled = true

Наслаждайтесь ...! 

1
Kiran jadhav

Решение одной линии  

self.navigationController?.view.isUserInteractionEnabled = false
0
Ghulam Rasool

Этот код должен работать на Swift 4.2

self.navigationItem.rightBarButtonItem?.isEnabled = false

Приведенный выше код отключит кнопку. Чтобы включить его, переключите логическое значение на true

0
Kavin Varnan
var menuBtn = new UIButton(UIButtonType.Custom);
menuBtn.Frame = new CGRect(x: 0.0, y: 0.0, width: 20, height: 20);
menuBtn.SetImage(new UIImage("filter"), UIControlState.Normal);

menuBtn.Alpha = 0.05f;   //to set the Alpha

menuBtn.Enabled = false;

протестировано только на Mvvmcross Xamarin.iOS

0
Komicon

Попробуйте этот код:

UIApplication.sharedApplication().beginIgnoringInteractionEvents()

Это остановит взаимодействие пользователя с приложением, и после сервисного вызова снова напишите этот код:

UIApplication.sharedApplication().endIgnoringInteractionEvents()

Конечно, это поможет.

0
Muhammad Fasi

Элементы кнопок панели навигации должны переключаться путем обращения к ним через свойство navigationItem.

Например:

func setupNav() {
    let saveButton = UIBarButtonItem.init(barButtonSystemItem: .save, target: self, action: #selector(onSavePressed))
    navigationItem.rightBarButtonItem = saveButton
    saveButton.isEnabled = false
  }

func validateSave() {
     saveButton.isEnabled = isConditionMet // WON'T work
      navigationItem.rightBarButtonItem.isEnabled = isConditionMet // WORKS!
}
0
Diviyo