2012-10-11 5 views
8

Sto provando a ottenere un pulsante indietro senza un titolo ma non riesco a farlo funzionare. Sono realmente nuovo in Objective-C ...setBackButtonBackgroundImage senza titolo IOS5

UIImage *backButtonImage = [[UIImage imageNamed:@"back.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 30, 50)]; 
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage 
                forState:UIControlStateNormal 
               barMetrics:UIBarMetricsDefault]; 

Con questo codice che ho il mio tasto posteriore, ma anche il titolo della pagina precedente.

Ho trovato alcuni esempi di lavoro utilizzando la classe UIViewController ma nel mio caso il codice si trova nel file appDelegate.m.

Qualche idea su come posso farlo funzionare?

+0

per essere chiari, stai solo cercando di fare un pulsante personalizzato che appare come la parte posteriore pulsante senza titolo in esso? – TheJer

risposta

4

Da quello che posso dire, stai impostando correttamente il proxy dell'aspetto. Il problema qui è impostare un nuovo titolo per il pulsante Indietro.

Per fare ciò, creare un pulsante personalizzato con il proprio comportamento e utilizzarlo come nuovo pulsante Indietro. Imposta questa prima di spingere o pop detto View Controller, come ad esempio in init

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"" 
                   style:UIBarButtonItemStyleBordered 
                   target:nil 
                   action:nil]; 

[self.navigationItem setBackBarButtonItem: newBackButton]; 
+0

@ user1736571 Se la mia risposta fosse adatta alle tue esigenze, puoi accettare?Grazie. – WDUK

0
UIImage *image1 = [UIImage imageNamed:@"image.png"]; 
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:image1 forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

Sopra utilizzare il codice set di immagini bacground nel pulsante Indietro per.

+1

Questo non risolve il fatto che il pulsante non dovrebbe avere titolo. – arclight

-4

Basta aggiungere questa riga dopo il codice che avete già scritto:

[[UIBarButtonItem appearance] setTitle:@""]; 

Speranza che funziona.

+0

Arresta l'app in modo anomalo ... Solo risposte serie per favore ... – arclight

+0

I "spero che funzioni" anche se invio una risposta. – Morkrom

0

come ho capito, stai chiedendo come modificare il titolo del pulsante posteriore.

ecco come lo faccio sempre

[email protected]"My Title"; 

Credo che si può impostare come un vuoto non dando alcun titolo

[email protected]""; 

assicurarsi di chiamare questa funzione prima di spingere il nuovo vista.

0

non l'ho provato, ma penso che dovrebbe funzionare .... Metti questo in viewdidLoad, spero che sia quello che stai cercando.

UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" 
style:UIBarButtonItemStylePlain target:nil action:nil]; 
self.navigationItem.backBarButtonItem = backBarButtonItem; 
[backBarButtonItem release]; 
9

Una molto facile hack che ho adattato che utilizza il proxy aspetto iOS 5 è la seguente (manco a dirlo, il beneficio del proxy è il cambiamento globale per tutte le barre nav):

[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-400.f, 0) 
                forBarMetrics:UIBarMetricsDefault]; 

Questo metodo è disponibile in iOS 5 SDK, quindi non preoccuparti.


EDIT

Al fine di evitare l'immagine di stretching, utilizzare il seguente:

UIImage* image = [UIImage imageNamed:@"back"]; 
return [image resizableImageWithCapInsets:UIEdgeInsetsMake(0, image.size.width, 0, 0)]; 
+0

Allunga ancora l'immagine del pulsante. – TMilligan

+0

@TMilligan Vedi la mia risposta aggiornata ... – Mazyod

+0

Soluzione ben giocata, grazie! – ZaBlanc