15 Stimmen

Wie kann man mehr als einen UIBarButton auf UINavigationItem.rightBarButtonItem (oder leftBarButtonItem) hinzufügen?

Ich habe diesen Ansatz/Hack ausprobiert: http://blog.blackwhale.at/2009/06/uibuttons-in-uinavigationbar/

Das Problem ist, dass dabei eine schwache Naht entsteht. Ich habe versucht, das Hintergrundbild der verschachtelten Symbolleiste auf ein Bild zu setzen, das ich aufgenommen habe, wie es sein sollte. Das hat aber nicht funktioniert. Das Bild wurde nicht angewendet. Ich habe auch versucht, eine verschachtelte UINavigationBar zu verwenden, und das schien nicht zu funktionieren.

Ich habe dies in mehreren iPhone-Anwendungen gesehen. Weiß jemand, wie das geht?

[EDIT] Ich möchte, dass die Schaltflächen wie normale UIBarButtonItems aussehen und in der Lage sein, Systemstile wie UIBarButtonSystemItemAdd, UIBarButtonSystemItemRefresh zu verwenden. Der Link, den ich zur Verfügung gestellt habe, tut dies, außer Sie können eine schwache Naht sehen, weil es eine UIToolbar in der Navigationsleiste verschachtelt ist

Bitte erwähnen Sie nicht, dass dies gegen die Human Interface Guidelines verstößt. (Wir wissen).

Ich weiß es zu schätzen, dass Sie Ihre Hacks zur Verfügung stellen... nur so kann man das machen!

36voto

Craig B Punkte 4639

IOS 5.0 unterstützt jetzt mehrere Tasten. Siehe die iOS-Dokumentation für UINavigationItem. Insbesondere die folgenden:

Eigenschaften:

@property(nonatomic, copy) NSArray *leftBarButtonItems;
@property(nonatomic, copy) NSArray *rightBarButtonItems;
@property BOOL leftItemsSupplementBackButton;

Methoden:

- (void)setLeftBarButtonItems:(NSArray *)items animated:(BOOL)animated;
- (void)setRightBarButtonItems:(NSArray *)items animated:(BOOL)animated;

18voto

ma11hew28 Punkte 112879

Ich habe Code, um zwei Schaltflächen rechts von der Navigationsleiste hinzuzufügen . Sie können einstellen barStyle = -1 statt Unterklassenbildung UIToolbar .

6voto

Steven Baughman Punkte 1036

Um den Hintergrund ('seam') einer UIToolbar loszuwerden, erstellen Sie eine Unterklasse von UIToolbar und überschreiben Sie die Methode (void)drawRect:(CGRect)rect. Lassen Sie diese leer und Ihre UIToolbar hat keinen Hintergrund mehr.

Ich habe dies gerade in meinem eigenen Projekt verwendet und es hat gut funktioniert. Gefunden dies in den Kommentaren von: http://osmorphis.blogspot.com/2009/05/multiple-buttons-on-navigation-bar.html

3voto

Alex Reynolds Punkte 93906
UIView *parentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, myWidth, myHeight)];
// make UIView customView1... (UILabel, UIButton, etc.) with desired frame and settings
[parentView addSubview:customView1];
[customView1 release];
// make UIView customView2... (UILabel, UIButton, etc.) with desired frame and settings
[parentView addSubview:customView2];
[customView2 release];
UIBarButtonItem *customBarButtomItem = [[UIBarButtonItem alloc] initWithCustomView:parentView];
[parentView release];
self.navigationItem.rightBarButtonItem = customBarButtomItem;
[customBarButtomItem release];

2voto

Rahul Vyas Punkte 27409

Siehe uicatalogue-Beispiel, das auf der Apple-Website kostenlos zur Verfügung steht... sie haben uisegmented control verwendet, um drei Schaltflächen anstelle der rechten Schaltfläche in der Navigationsleiste anzuzeigen...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X