2015-03-17 55 views
7

Bir iOS uygulaması geliştiriyorum ve gezinme çubuğunda bir görüntüyü sol çubuk düğme öğesiyle kullanma konusunda sorunlar yaşıyorum. Ben aşağıdaki yollarla bu çalıştılar:leftbarbuttonitem, gezinti çubuğunda görünmüyor

UIImage *backButtonImage = [UIImage imageNamed:@"backbuttonCB"]; 
CGRect buttonFrame = CGRectMake(0, 0, backButtonImage.size.width, backButtonImage.size.height); 
UIButton *backButton = [[UIButton alloc] initWithFrame:buttonFrame]; 
[backButton setImage:backButtonImage forState:UIControlStateNormal]; 
UIBarButtonItem *backBarButtonItem= [[UIBarButtonItem alloc] initWithCustomView: backButton]; 
self.navigationItem.leftBarButtonItem = backBarButtonItem; 

çubuğu düğmesi uygulamasını çalıştırırken gösterilecek görünüyor asla.

Daha sonra aşağıdaki gibi başka bir yöntemi denemeye devam ettim.

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"backbuttonCB"] style:UIBarButtonItemStylePlain target:nil action:@selector(methodname)]; 

Bu yöntem aslında çalıştı. Ancak, görüntülenen görüntü maviydi ve kastedilmemesi gibi görünmüyordu. Bu görüntünün renk tonunu değiştirmek yardımcı olmadı.

Bu sorunu nasıl çözebilirim?

DÜZENLEME: Daha fazla bilgi, yardımcı olursa. Bu, gezinme yığındaki ilk görünümdür. Navigasyon yığını, genel olarak gösterilmektedir, yani, bir önceki denetleyici denetleyicisi vardır ve bir önceki denetleyici denetleyicisi ve gezinme denetleyicisi arasında bir modal hareketi vardır. Bu, gezinme yığındaki ilk görünümdür.

DÜZENLEME: SORUNU SABİT. Sanırım xcode'ta bir hataydı çünkü xcode'u yeniden başlattığımda ve emülatör yerine gerçek bir cihazla test ettiğimde iyi çalıştı. Ancak, hala bir emülatör üzerinde çalışmıyor gibi görünüyor.

+0

Düğmenin arka plan görüntüsünü ayarlamayı denediniz mi? – Wain

+0

UIButton'u UIButton * düğmesi = [UIButton düğmesiWithType: UIButtonTypeCustom]; '' setFrame' ve 'setImage' –

+0

olarak başlatmalısınız. Her iki yöntem de çalışmadı. – sosale151

cevap

0

böyle bir customType olarak düğmeye başlatmak için kodunuzu değiştirin:

UIImage *backButtonImage = [UIImage imageNamed:@"backButtonCB"]; 
    CGRect buttonFrame = CGRectMake(0, 0, backButtonImage.size.width, backButtonImage.size.height); 
    UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [backButton setFrame:buttonFrame]; 
    [backButton setImage:backButtonImage forState:UIControlStateNormal]; 
    UIBarButtonItem *backBarButtonItem= [[UIBarButtonItem alloc] initWithCustomView: backButton]; 
    self.navigationItem.leftBarButtonItem = backBarButtonItem; 

Umarım yardımcı olur .... :) bu kodu kullanmayı

+0

Bunu denedim. İşe yaramadı. – sosale151

+0

sonra ilk önce 'backButtonImage' var mı kontrol et ya da değil? –

+0

evet ... doğru görüntü adını girdiğinizi kontrol edin, coz çalışmam bitiyor –

5

deneyin,

self.navigationItem.hidesBackButton=YES; 

UIImage *buttonImage = [UIImage imageNamed:@"Back"]; 
UIButton *aButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[aButton setImage:buttonImage forState:UIControlStateNormal]; 
aButton.frame = CGRectMake(0.0,0.0,buttonImage.size.width,buttonImage.size.height); 
[aButton addTarget:self action:@selector(backBtnTapped) forControlEvents:UIControlEventTouchUpInside]; 
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:aButton]; 
self.navigationItem.leftBarButtonItem = backButton; 
+0

Neyin farklı? –

+0

Mükemmel Yanıt! – Vignesh

+0

Benim için çalışmıyor. Tahminimce, navigasyon kontrolörü ile bir arada sunulması gereken bir şey var. – sosale151

3

Bende aynı problem vardı. Düğmeyi görmek için renk tonunu değiştirmem gerekiyordu, burada şu kod şu şekilde: Swift:

self.navigationItem.leftBarButtonItem = UIBarButtonItem.init(image:UIImage.init(named: "btn_back_default")!, style:UIBarButtonItemStyle.Plain, target: self, action: Selector("back")) 
self.navigationItem.leftBarButtonItem?.tintColor = UIColor.whiteColor() 
12

SolBarButtonItem'inizi bu şekilde ayarlamayı deneyin. Moda sunulurken ortaya çıkmaz. leftBarButtonItem için atamadan önce myButton.sizeToFit() çağrılması

self.navigationController?.navigationBar.topItem.leftBarButtonItem =

+1

Siz erkeğiniz, teşekkürler. –

1

bana yardımcı oldu.

let cancelButton = UIButton() 
    cancelButton.backgroundColor = .red 
    cancelButton.setTitle("Common/Cancel".localized, for: .normal) 
    cancelButton.sizeToFit() //!!! 
    let cancelBarButton = UIBarButtonItem(customView: cancelButton) 
    navigationItem.leftBarButtonItem = cancelBarButton 
+0

SoldakiBarButtonItem iOS10 ve önceki sürümlerde gösterilmiyordu. Çözümünüz işe yaradı çünkü UIEdgeInset'i iOS10'un beğenmediği negatif bir sayıya (iOS11 için) ayarladım. Teşekkürler. – yoshitech