12

Kann jemand eine rightBarButtonItem eines UINavigationController verstecken? In meiner Anwendung habe ich eine Bearbeitungsschaltfläche als rightBarButtonItem von UINavigationController. Ich möchte das verstecken? UIBarButton ", wenn einige Operationen ausgeführt werden.Hide the rightBarButtonItem eines Navigationscontrollers

+0

'self.navigationItem.rightBarButtonItems [1] setEnabled: NEIN];' wenn Sie ein Array haben, wie wenn Sie flexibles Leerzeichen verwenden. –

Antwort

11

self.navigationItem.rightBarButtonItem = nil; 

versuchen, wenn Sie es zurück wollen, obwohl Sie auf eine Schaltfläche dh

UIBarButtonItem *rightBarButton = 
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch 
               target:self 
               action:@selector(searchBar:)]; 
self.navigationItem.rightBarButtonItem = rightBarButton; 
[rightBarButton release]; 
+1

Was ist, wenn ich kein Objekt neu erstellen möchte? Zum Beispiel, ich möchte RightBarButton zu einem breiten Rahmen von searchBar auf titleView of navigationBar ausblenden. ich meine, ist Verstecken möglich, indem Eigentum oder etwas geändert wird? –

+0

wenn Sie UINavigationController ableiten möchten. Sie können Folgendes tun: self.topViewController.navigationItem.rightBarButtonItem = rightBarButton; self ist die benutzerdefinierte Klasse UINavigationController –

15

Zum Ausblenden der rechten Taste muss instanziiert: self.navigationItem.rightBarButtonItem = nil;

Nun, es zu zeigen:

  1. Wenn Sie Setup die rechte Taste in Ihrem View-Controller, indem sie es dann wieder einfach zuweisen, um self.editButtonItem zuweisen, es zu zeigen:

    self.navigationItem.rightBarButtonItem = self.editButtonItem;

  2. die rechte Taste in Ihren View-Controller Wenn Sie Setup durch die Zuweisung und Initing eine UIBarButtonItem, dann halten Sie einfach einen Verweis auf die UIBarButtonItem in Ihren View-Controller, und es erneut zuweisen, wenn Sie es zeigen müssen.

+0

Ich habe versucht, rightBarButtonItem zuzuweisen, um in Objective C nicht zu funktionieren, es funktioniert nicht für mich –

10

Wenn Sie verstecken müssen/zeigen die Taste auf einer Bedingung basiert, versuchen Sie dies:

if (condition) { 
    self.navigationItem.rightBarButtonItem.title = @""; 
    self.navigationItem.rightBarButtonItem.enabled = NO; 
} else { 
    self.navigationItem.rightBarButtonItem.title = @"my button title"; 
    self.navigationItem.rightBarButtonItem.enabled = YES; 
} 

Auf diese Weise müssen Sie nicht einen Verweis auf die Schaltfläche in einer Eigenschaft speichern oder Sorgen über die Verkabelung der Aktion auf eine neue Schaltfläche.

Verwandte Themen