comment désactiver un élément de barre de navigation dans iOS

j'ai créé un contrôleur de navigation. Dans la deuxième vue (qui est poussée), j'ai un appel de webservice et je place une vue de superposition et le paramètre

self.view.userInteractionEnabled = NO ;

une fois l'appel de service web terminé, je retourne à

self.view.userInteractionEnabled = YES ;

quand je fais cela, tous les autres boutons sauf ceux de la barre de navigation sont désactivés. Comment désactiver ces deux éléments du bouton de la barre de navigation ? (un bouton semblable au bouton de retour, qui apparaît à premier contrôleur de vue et un autre bouton qui donne des informations sur l'aide).

j'ai essayé d'utiliser self.navigationItem.backBarButtonItem.enabled = NO. Mais je peux quand même appuyer sur le bouton et naviguer jusqu'au premier écran. Comment puis-je désactiver ces deux boutons ?

19
demandé sur rmaddy 2014-08-18 15:18:09

11 réponses

Essayez ceci

Recommandé

self.navigationItem.leftBarButtonItem.enabled = NO;

self.navigationItem.rightBarButtonItem.enabled = NO;

ou tout simplement désactivé par

sur le Bord de cas

self.view.window.userInteractionEnabled = NO;

mise à Jour: Récemment, Apple n'autorise pas le bouton arrière à activer / désactiver. Au lieu de cela nous pouvons le cacher.

self.navigationItem.hidesBackButton = YES;
46
répondu Vijay-Apple-Dev.blogspot.com 2014-12-03 09:01:10
Swift

self.navigationItem.rightBarButtonItem?.enabled = true

cet extrait va désactiver le bouton.

11
répondu Jay Mayu 2015-07-08 09:30:57

juste désactiver votre UINavigationController interaction avec la barre de navigation:

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

Et l'activer quand vous en auriez besoin:

self.navigationController.navigationBar.userInteractionEnabled = YES;
self.navigationController.view.userInteractionEnabled = YES;
7
répondu jbouaziz 2014-08-18 13:58:40

dernière Swift: pour masquer le bouton Précédent, vous devez utiliser:

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

Note: cela peut déclencher un bug dans la barre de navigation qui peut faire apparaître un artefact à la place d'un bouton Back caché lors de la transition vers une vue qui n'a pas de bouton back (ou qui a un leftButton à sa place). L'artefact qui apparaît est soit des ellipses"..."ou le titre du viewController précédent sur la pile. Je crois que ce bug être lié au bug documenté dans apple échantillon projet de code "CustomizingUINavigationBar", CustomBackButtonViewController.m

7
répondu ObjectiveTC 2015-09-10 14:19:44
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;
}
2
répondu 2015-10-15 05:41:48

j'ai résolu cela en ajoutant simplement une propriété à mon viewcontroller:

@property (nonatomic, strong) IBOutlet UIBarButtonItem * RightButton;
self.RightButton.enabled=true;
1
répondu Sjakelien 2017-02-13 11:15:28

si vous voulez désactiver un élément de barre de navigation ou si vous voulez désactiver trou UINavigationBar c.-à-d. tous les éléments présents sur la barre de navigation, Utilisez sous les lignes de code;

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

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

Profiter...!

1
répondu Kiran jadhav 2017-12-08 04:38:13

pour iOS 10.3, swift 3

self.navigationItem.drightbarbuttonitem?.isEnabled = false.

1
répondu Sagar D 2018-03-07 09:48:54

essayez ceci

UIApplication.sharedApplication().beginIgnoringInteractionEvents()

ceci empêchera l'utilisateur d'interagir avec l'application et après appel de service écrire ceci

UIApplication.sharedApplication ().endIgnoringInteractionEvents ()

bien sûr que cela aidera.

0
répondu Muhammad Fasi 2016-06-29 09:15:51

solution sur une ligne

self.navigationController?.view.isUserInteractionEnabled = false
0
répondu Ghulam Rasool 2017-10-11 12:05:59
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,05 f;//pour définir l'Alpha

menuBtn.Enabled = false;

0
répondu Komicon 2018-08-23 11:34:11