2009-07-11 8 views
5

Durch Interface Builder habe ich die Möglichkeit, die Kennung eines UIBarButtonItem in etwas wie "Hinzufügen" (oder "Rückgängig", "Wiederholen" usw.) zu ändern. Dies gibt meinem Button ein schönes "+" Bild.Programmatische Änderung der ID-Eigenschaft von UIBarButtonItem

Wie kann ich das programmatisch einstellen? Das UIBarButtonItem akzeptiert eine "SetIdentifier" Nachricht nicht.

Antwort

6

Einmal erstellt, ein "Identifier" UIBarButtonItem kann nicht geändert werden. Die Benutzeroberfläche kann jedoch geändert werden, indem die Schaltfläche durch eine programmatisch konstruierte Variante ersetzt wird. Zum Beispiel:

UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd 
                      target:self 
                      action:@selector(doAddAction:)]; 
+10

Ihr Titel für diesen Beitrag ist irreführend. Dies ändert nicht den Bezeichner eines UIBarButtonItem, es erstellt nur einen neuen mit der initialisierten Bezeichnereigenschaft. Ich suche nach einer Möglichkeit, den Bezeichner für eine vorhandene Schaltfläche zu ändern. Ein besserer Titel wäre "Die ID-Eigenschaft eines neu erstellten UIBarButtonItem programmatisch setzen" oder etwas Ähnliches. – Senseful

+2

Es tut mir leid, dass Sie über meine Lösung gestolpert sind und es nicht ganz Ihren Erwartungen entspricht. Als ich die Frage stellte, suchte ich nach einem Weg, um es tatsächlich zu ändern. Die Lösung hat für mich funktioniert - wenn du es nicht getan hast, tut es mir Leid. – rein

2

Wenn Sie eine Schaltfläche Stil: grenzte und Kennung: Kamera Verwendung

UIBarButtonItem *btn; 
btn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(shotAction:)]; 
btn.style=UIBarButtonItemStyleBordered; 
0

Sobald die UIBarButtonItem erstellt wird, gibt es keine Möglichkeit, die Kennung zu ändern. Sie können jedoch ein neues UIBarButtonItem erstellen, um das alte UIBarButtonItem zu ersetzen

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction 
                   target:self 
                   action:@selector(buttonClickedAction:)]; 

self.navigationItem.rightBarButtonItem = barButton; 
Verwandte Themen