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!

1voto

Evan Punkte 151

Ich kann dazu nichts sagen, aber zusätzlich zu @iworkinprogress musste ich die Hintergrundfarbe der UIToolbar auf "clear" setzen:

    [toolbar setBackgroundColor:[UIColor clearColor]];

Dies wurde auch in den Kommentaren von http://osmorphis.blogspot.com/2009/05/multiple-buttons-on-navigation-bar.html .

0voto

DrMickeyLauer Punkte 4067

In iOS 4.x scheint clearColor keine Auswirkung auf die UIToolbar zu haben, während drawRect: überschrieben wurde.

0voto

Johann Punkte 11770

Ich habe eine Hilfsfunktion entwickelt, die ich in meinem gesamten Projekt verwende. Grundsätzlich prüft sie, ob bereits eine Schaltfläche auf der Leiste vorhanden ist, und fügt entweder die neue Schaltfläche hinzu oder verschmilzt sie mit vorhandenen Schaltflächen. So können Sie die Funktion nur einmal oder mehrere Male aufrufen:

+ (void)AddButtonToBar:(UIViewController *)controller withImage:(NSString *)imageName withAction:(SEL)action withFrame:(CGRect) frame{
    UIButton *newButton =[[UIButton alloc] init];
    [newButton setBackgroundImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
    newButton.frame = frame;
    [newButton addTarget:controller action:action forControlEvents:UIControlEventTouchUpInside];

    if ([[controller.navigationItem rightBarButtonItems] count] == 0)
        [controller.navigationItem setRightBarButtonItem:[[UIBarButtonItem alloc] initWithCustomView:newButton]];
    else {
        NSMutableArray *existingButtons = [[NSMutableArray alloc] initWithArray:[controller.navigationItem rightBarButtonItems]];
        [existingButtons addObject:[[UIBarButtonItem alloc] initWithCustomView:newButton]];
        [controller.navigationItem setRightBarButtonItems:(NSArray *)existingButtons];
    }
}

Rufen Sie es vom View-Controller aus auf:

[Helper AddButtonToBar:self withImage:@"imageName.png" withAction:@selector(myAction) withFrame:CGRectMake(0, 0, 24, 24)];

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