Wie fügt Sie mehr als ein Uibarbutton auf uinAvigationItem.RightbarbuttonItem (oder linkbarbuttonitem) hinzu?

StackOverflow https://stackoverflow.com/questions/1414510

Frage

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

Das Problem ist, dass dies eine schwache Naht hinterlässt. Ich habe versucht, das Hintergrundbild der verschachtelten Symbolleiste auf ein Bild zu setzen, das ich aufgenommen habe, was es sein sollte. Das hat nicht funktioniert. Das Bild wurde nicht angewendet. Ich habe auch versucht, eine verschachtelte Uinavigationbar zu verwenden, und das schien nicht zu funktionieren.

Ich habe das in mehreren iPhone -Apps gesehen. Weiß jemand wie?

Edit] Ich möchte, dass die Schaltflächen wie normale Uibarbuttonitems aussehen und Systemstile wie UibarbuttonSystemItemadd, UibarbuttonSystemItemReFresh verwenden können. Der Link, den ich bereitgestellt habe, ist, außer dass Sie eine schwache Naht sehen können, da es sich um eine in der Navigationsleiste verschachtelte Uitoolbar.

Bitte erwähnen Sie nicht, dass dies die Richtlinien für die menschliche Schnittstelle brechen. (Wir wissen).

Ich schätze es, dass Sie Ihre Hacks beigetragen haben ... das ist der einzige Weg, dies zu tun!

War es hilfreich?

Lösung

Um den Hintergrund ('Naht') einer Uitoolbar loszuwerden, erstellen Sie eine Unterklasse der Uitoolbar und überschreiben Sie die (void) DrawRect: (CGRECT) RECT -Methode. Lassen Sie das leer und Ihre Uitoolbar wird keinen Hintergrund mehr haben.

Ich habe dies gerade in meinem eigenen Projekt benutzt und hat großartig funktioniert. Fand dies in den Kommentaren von: http://osmorphis.blogspot.com/2009/05/multiple-buttons-on-navigation-bar.html

Andere Tipps

iOS 5.0 unterstützt jetzt mehrere Tasten. Siehe die iOS -Dokumentation für uInavigationItem. Insbesondere wie folgt:

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;

Ich habe gepostet Code zum Hinzufügen von zwei Schaltflächen rechts neben der Navigationsleiste. Sie können festlegen barStyle = -1 anstelle der Unterklasse UIToolbar.

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];

Siehe Uicatalogue -Beispiel für kostenlos auf Apple's Site ... Sie verwendeten UiSegmented Control, um drei Tasten anstelle der rechten Balkenknopf in der Navigaion -Bar anzuzeigen ...

Ich kann nicht kommentieren, aber zusätzlich zu @iworkInprogress musste ich die Uitoolbar -Hintergrundfarbe festlegen, um zu klären:

    [toolbar setBackgroundColor:[UIColor clearColor]];

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

In iOS 4.x scheint das ClearColor keine Auswirkungen auf die Uitoolbar zu haben, während seine Drawrect: to to to.

Ich habe mir eine Helferfunktion ausgedacht, die ich überall in meinem Projekt verwende. Grundsätzlich überprüft es, ob sich bereits eine Taste an der Balken befindet, und fügen Sie entweder das neue hinzu oder verschmelzen es mit vorhandenen Tasten. Sie können die Funktion also nur einmal oder mehrmals 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 Ansichtsregler an:

[Helper AddButtonToBar:self withImage:@"imageName.png" withAction:@selector(myAction) withFrame:CGRectMake(0, 0, 24, 24)];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top