iOS 5: Comment mettre en œuvre un personnalisé (image) bouton de retour

J'ai fait le tutoriel de mon blog, donc je sais comment faire un extensible bouton qui permet d'afficher le fond (de la pile) viewcontroller du titre. Mais ce que j'espérais faire est d'avoir des icônes (comme une maison pour la MAISON) et pas de texte, pas de redimensionnement.

L'utilisation de mon image personnalisée et ce code ci-dessous, je reçois une version allongée (pas voulu) avec le titre plus haut (pas voulu) et il ne tint/mise en évidence lorsque l'utilisateur clique dessus (c'est bon);

UIImage *backButtonImage = [UIImage imageNamed:@"backButton_30.png"];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

capture d'écran 1

Maintenant, j'ai cherché ici et de lire toutes les questions similaires qui, de retour de vieilles réponses, et d'avoir des résultats étranges pour moi. Voici le code que j'ai essayé;

  UIImage *backButtonImage = [UIImage imageNamed:@"backButton_30.png"];
  UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:backButtonImage style:UIBarButtonItemStyleBordered target:nil action:nil];
  self.navigationItem.backBarButtonItem = backButton;

Cette méthode n'étend pas mon image personnalisée bouton (qui est bon), et ne montre pas de texte (ce que je veux) mais il est encore à l'original bouton bleu sous (WTF), et mon bouton personnalisé n'est pas la teinte lorsque l'utilisateur clique dessus, seul le bouton bleu sous il ne!

capture d'écran 2

S'il vous plaît aider, ce qui me manque?

*Mise à JOUR

J'ai corrigé un peu à l'aide d'un de redimensionner l'image. Cette force de ne pas étirer

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

Pour corriger le titre affiche sur le bouton que j'avais à faire

self.title =@" ";

Maintenant, c'est un peu un sale fixer, mais il semble fonctionner. Le seul problème qui reste maintenant c'est que je veux un autre bouton de retour sur les différents points de vue, et cette méthode est à l'origine de certains problèmes; le dernier point de vue qui définit le bouton annule toutes les autres vues. Donc en fin de compte, selon la façon dont vous naviguer à travers l'application, le retour à la vue précédente qui a le mauvais bouton de retour et il n'a jamais remis à la bonne.

MISE À JOUR 2: POTENTIEL IDÉE:

Suite être une solution raisonnable, ou est-il un hack qui est responsable de casser quelque chose?

Cacher le défaut de bouton de retour, comme si,

[self.navigationItem setHidesBackButton:YES animated:NO];

...et puis en utilisant une mesure UIBarButtonItem, avec un bouton dans le style que je veux en fait placé dans l'emplacement de la touche retour, qui envoie un popViewControllerAnimated: message à la UINavigationController gemmage.

Si vous connaissez une solution plus robuste veuillez faire partager, merci.

Tu ne peux pas le changer dans les Attributs de l'Inspecteur?
Je voudrais bien savoir comment... j'ai choisi le premier-vue-contrôleur dans le storyboard, puis est allé à l'attribut de l'inspecteur et je ne m'en fait voir une boîte en vertu de l'élément de navigation qui dit bouton de retour, cependant je n'ai aucune idée de comment l'utiliser; j'ai essayé en tapant le nom de l'image, mais il ne semble pas faire quoi que ce soit. Toutes les suggestions?
Il y a une autre approche pour résoudre ce - que vous pourriez faire glisser un bouton générique de la barre de navigation, et puis jouer avec des images et les noms.. j'espère que cela vous aide!
Y aurait-il alors être un moyen de puis assurez-vous que le bouton d'assumer le comportement de la touche retour?

OriginalL'auteur RobDigital | 2012-05-25