2012-06-30 16 views
7

Próbuję ustawić obraz dla mojego UIBarButtonItem i nie mogę tego zrobić. Próbowałem dwa razy iw pierwszym przypadku otrzymałem obraz we właściwym miejscu, ale kiedy klikam przycisk nic się nie dzieje (powinien wyskoczyć nowe okno, ale nic nie działa). Tam jest kawałek kodu użyłem:Nie można ustawić obrazu dla UIBarButtonItem

UIImage *faceImage = [UIImage imageNamed:@"plus_button.png"]; 
    UIButton *face = [UIButton buttonWithType:UIButtonTypeCustom]; 
    face.bounds = CGRectMake(0, 0, faceImage.size.width, faceImage.size.height); 
    [face setImage:faceImage forState:UIControlStateNormal]; 
    UIBarButtonItem *faceBtn = [[[UIBarButtonItem alloc] initWithCustomView:face]initWithImage:faceImage style:UIBarButtonItemStylePlain target:self action:@selector(addProduct:)]; 

    self.navigationItem.leftBarButtonItem = faceBtn; 

W drugim przypadku, ustawić obraz na przycisku i nowe okno pojawia się tak jak powinno być, ale to nie tylko mój zwyczaj obraz chcę, ale również pokaz "border", wygląda na to, że obraz został umieszczony pośrodku na domyślnym przycisku. Oczywiście chcę tylko mojego wizerunku, a nie granic, tylko mojego wizerunku. Jest kawałek kodu, którego użyłem w drugim przypadku:

UIBarButtonItem *addButton = [[UIBarButtonItem alloc]initWithImage:faceImage style:UIBarStyleDefault target:self action:@selector(addProduct:)]; 

    self.navigationItem.leftBarButtonItem = addButton; 

Proszę mi pomóc rozwiązać ten problem, każda pomoc będzie doceniona, dziękuję!

Odpowiedz

8

... spróbować zmienić to metoda, obraz według ciebie

UIButton *button1=[UIButton buttonWithType:UIButtonTypeCustom]; 
[button1 setFrame:CGRectMake(10.0, 2.0, 45.0, 40.0)]; 
[button1 addTarget:self action:@selector(showLeft:) forControlEvents:UIControlEventTouchUpInside]; 
[button1 setImage:[UIImage imageNamed:@"left-arrow-button.png"] forState:UIControlStateNormal]; 
UIBarButtonItem *button = [[UIBarButtonItem alloc]initWithCustomView:button1]; 
self.navigationItem.leftBarButtonItem = button; 
+0

barButtonItemClass to niezadeklarowany identyfikator :( –

+0

oh! Napisałem go przez pomyłkę ... teraz edytowałem proszę sprawdź to :-) – TheTiger

+0

czy to działa? – TheTiger

3

Zmodyfikowałem twój kod i przetestowałem obraz pokazujący w barbutton. Spróbuj tego sam. I daj mi znać, jeśli napotkasz na jakiś problem.

UIImage *faceImage = [UIImage imageNamed:@"Badge.png"]; 
    UIButton *face = [UIButton buttonWithType:UIButtonTypeCustom]; 
    face.bounds = CGRectMake(0, 0, faceImage.size.width, faceImage.size.height); 
    [face addTarget:self action:@selector(showAlerts) forControlEvents:UIControlEventTouchUpInside]; 
    [face setImage:faceImage forState:UIControlStateNormal]; 
    UIBarButtonItem *faceBtn = [[UIBarButtonItem alloc] initWithCustomView:face];  
    self.navigationItem.leftBarButtonItem = faceBtn; 

EDYCJA: Dodałem linię w mojej odpowiedzi. Właśnie wydrukowałem wiadomość "Hi" w logu. to działa. Czy możesz spróbować?

Dzięki.

+0

Yuvaraj i bardzo cenione, co zrobiłeś, ale chcę Ci wspomnieć użyłem „Działanie: @selector (addProduct :)” do zadzwonić do mojego drugiego okna. Oczywiście nie jest to nazywane –

+0

@EvgeniyKleban Proszę wypróbować moją zredagowaną odpowiedź. Dzięki. –

+0

Yuvaraj.M dzięki wszystko działa! Właśnie dostałem 2 poprawne odpowiedzi od ciebie i faceta poniżej, jestem taki szczęśliwy, że rozwiązałem ten problem! Proszę przyjąć moje najlepsze życzenia! :) –

1
UIBarButtonItem *addButton = [[UIBarButtonItem alloc]initWithImage:faceImage style: UIButtonTypeCustom target:self action:@selector(addProduct:)]; 

    self.navigationItem.leftBarButtonItem = addButton; 

u były tworząc domyślny przycisk, trzeba utworzyć przycisk UIButtonTypeCustom typu ...

+0

Dziękuję, rozumiem to, ale nie mogę zarządzać sprawami :) –

0

Swift wersja zaakceptowanej odpowiedzi dla każdego

var settingsButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton 
settingsButton.frame = CGRect(origin: CGPointZero, size: CGSize(width: 36, height: 36)) 
settingsButton.setImage(image, forState: UIControlState.Normal) 
settingsButton.addTarget(self, action: "buttonActionHere:", forControlEvents: UIControlEvents.TouchUpInside) 

let rightBarButtonItem = UIBarButtonItem(customView: settingsButton) 
navigationItem.setRightBarButtonItem(rightBarButtonItem, animated: true) 
3

Lub ... wystarczy napisać dwie linie kodu Swift iOS 8 Swift. (Może nawet działać w iOS 7)

let doneButtonAsLeftArrow = UIBarButtonItem(image: UIImage(named: "LeftArrow24x24.png"), style: .Plain, target: self, action: "doneButtonPushed") 
    navigationItem.leftBarButtonItem = doneButtonAsLeftArrow 
+0

To powinna być zaakceptowana odpowiedź. – reinaldoluckman

Powiązane problemy