2009-09-12 5 views
15

Ich habe versucht, diesen Ansatz/Hack: http://blog.blackwhale.at/2009/06/uibuttons-in-uinavigationbar/Wie fügen Sie UINavigationItem.rightBarButtonItem (oder leftBarButtonItem) mehr als einen UIBarButton hinzu?

Das Problem ist, das eine schwache Naht läßt. Ich habe versucht, das Hintergrundbild der verschachtelten Symbolleiste auf ein Bild einzustellen, das ich aufgenommen habe. 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 dies in mehreren iPhone-Apps getan. Weiß jemand wie?

[EDIT] Ich möchte, dass die Schaltflächen wie normale UIBarButtonItems aussehen und Systemstile wie UIBarButtonSystemItemAdd, UIBarButtonSystemItemRefresh verwenden können. Die Verbindung, die ich zur Verfügung stellte, tut dieses, außer, dass Sie eine schwache Naht sehen können, weil es eine UIToolbar ist, die in der Navigationsbar geschachtelt wird.

Bitte erwähnen Sie dieses nicht, die Richtlinien der menschlichen Schnittstelle brechend. (Wir wissen).

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

+0

Der Link erwähnt Sie ist nach unten :-( –

Antwort

6

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

Nur in meinem eigenen Projekt verwendet und funktionierte großartig. Gefunden dies in den Kommentaren: http://osmorphis.blogspot.com/2009/05/multiple-buttons-on-navigation-bar.html

+2

FYI, iOS 5.0 unterstützt mehrere Navigationsleisten-Schaltflächen. Siehe die Antwort, die ich unten gepostet habe. Wenn Sie jedoch für ältere Versionen des Betriebssystems bereitstellen müssen, müssen Sie weiterhin die in dieser Antwort beschriebene Technik verwenden. –

2

siehe uicatalogue Beispiel erhältlich vor Ort Apfel kostenlos ... sie verwendete uisegmented Steuer drei Tasten anstelle der rechten Leiste Taste auf Navigaion bar zu zeigen ...

+0

Sorry, ich bin nicht auf der Suche nach ein Segment-Steuerelement Ich möchte die Standard-Schaltflächen wie + (Schaltfläche hinzufügen), Bearbeiten, Symbol aktualisieren usw. – Cal

+0

Sie können eine benutzerdefinierte Ansicht mit den gewünschten Schaltflächen hinzufügen ... google für den benutzerdefinierten Ansichtscode suchen .. Sie werden in der Lage sein, es zu bekommen –

+0

gibt es viele Tutorial auf dem Netz, dies zu tun.wenn Sie versucht haben, schreiben Sie Ihren Code –

3
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]; 
+0

Ich möchte, dass die Schaltflächen wie normale UIBarButtonItems aussehen und Systemstile wie UIBarButtonSystemItemAdd, UIBarButtonSystemItemRefresh verwenden können. Die Verbindung, die ich zur Verfügung gestellt habe, macht dies, außer dass Sie eine schwache Naht sehen können, weil es eine UIToolbar ist, die in der Navigationsleiste verschachtelt ist. – Cal

+0

alex antwort funktioniert für dich perfekt –

+0

Ich habe das schon einmal versucht und der Button sieht anders aus. Aber Sie können ein Screenshot des gewünschten Aussehens machen und dieses in der Schaltfläche verwenden. – Cal

0

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

36

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

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

ich mit einer Hilfsfunktion kam ich über mein Projekt verwenden. Im Grunde prüft es, ob bereits eine Schaltfläche auf der Leiste vorhanden ist, und fügt entweder die neue hinzu oder fügt sie mit vorhandenen Schaltflächen zusammen.So können Sie die Funktion aufrufen, nur einmal oder mehrmals:

+ (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]; 
    } 
} 

Anruf aus dem View-Controller.

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