私は自分のブログでチュートリアルを行ったので、一番下 (スタック) のビューコントローラーのタイトルを表示できる伸縮可能なボタンを作成する方法を知っています。しかし、私が望んでいたのは、アイコン (HOME の家のようなもの) を持ち、テキストを持たず、サイズも変更しないことです。
私のカスタム画像と以下のこのコードを使用して、タイトルが上にある(望ましくない)引き伸ばされたバージョン(望ましくない)を取得し、クリックすると色合い/強調表示されます(良いです)。
UIImage *backButtonImage = [UIImage imageNamed:@"backButton_30.png"];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
今、私はここで検索し、古い回答を返し、私にとって奇妙な結果をもたらす同様の質問をすべて読みました。これが私が試したコードです。
UIImage *backButtonImage = [UIImage imageNamed:@"backButton_30.png"];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:backButtonImage style:UIBarButtonItemStyleBordered target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;
この方法では、カスタム イメージ ボタンが引き伸ばされず (良い)、テキストも表示されませんが (必要なもの)、その下に元の青いボタンがまだあり (WTF)、カスタム ボタンをクリックしても色がつきません。 、その下の青いボタンだけがそうです!
助けてください、何が足りないのですか?
*アップデート
サイズ変更可能な画像を使用して、少し修正しました。これにより、「ストレッチ」しないように強制されます
UIImage *backButtonHomeImage = [[UIImage imageNamed:@"backButtonHomeWhite_30.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonHomeImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
私がしなければならなかったボタンに表示されるタイトルを修正するには
self.title =@" ";
これは少し汚い修正ですが、機能しているようです。今残っている唯一の問題は、別のビューに別の戻るボタンが必要であり、この方法が問題を引き起こしていることです。ボタンを設定する最後のビューは、他のすべてのビューをオーバーライドします。結局、アプリの操作方法によっては、前のビューに戻ると間違った戻るボタンが表示され、正しいボタンにリセットされることはありません。
更新 2: 潜在的なアイデア:
以下は合理的な解決策でしょうか、それとも何かを壊す可能性のあるハックですか?
デフォルトの戻るボタンを非表示にすると、
[self.navigationItem setHidesBackButton:YES animated:NO];
...そして、カスタム UIBarButtonItem を使用して、実際に戻るボタンの位置に配置したいスタイルのボタンを使用し、タップ時にpopViewControllerAnimated:メッセージを UINavigationController に送信します。
より堅牢なソリューションを知っている場合は、共有してください。ありがとうございます。