0

プロジェクトをいじっているときに、興味深い奇妙な質問に出くわしました。

3時間ほど費やした後、UIBackBarButtonItemのビューを変更することはできず、UILeftBarButtonItemのみを変更できることがわかったので、カスタムの戻るボタンを実装したい場合は、UIBackButtonItemを非表示にして、ポップを行うUILeftBarButtonItemを表示します。

UIBackBarButtonItem のビューを変更することはできませんが、UILeftBarButtonItem と UIRightBarButtonItem のビューを変更することはできます。

Appleがなぜこれを行うのか、誰か説明してもらえますか?

4

3 に答える 3

0

私はあなたのための包括的な解決策を持っていると思います。

1) 経験上、BarButtonItems の制限に屈しないことが最善です。シンプルな UIButton を作成し、好みに合わせてカスタマイズすることをお勧めします。タッチイベントにアクションを追加するかもしれません..カスタムの背景とタイトルの色でブランド化する...など..おそらくプロパティとして、このボタンへの参照を保持します。

2) 次に、UIBarButtonItem 初期化子 -initWithCustomView を使用して UIBarButtonItem のインスタンスを作成し、UIButton インスタンスをこのカスタム ビューとして init に忍び込ませ、それを完全に制御します。

3) 最後に、これを行うだけです。self.navigationItem.LeftBarButtonItems = @[ourUIBarButtonItem].

ナビゲーション バーには、一連の左ボタン用の "leftBarButtonItems" 配列プロパティと、右側用の rightBarbuttonItems があります。これを、ボタンを含む UIbarButtonItem を含む独自の配列に置き換えるだけで、ボタンへの参照があります。

これで、ナビゲーション バーに適切に配置されたボタンを完全に制御できるようになりました。

ノート!- そのような leftBarButtonItem を提供すると、標準の Apple BackButton はなくなります。

于 2013-07-26T10:40:03.750 に答える
0

実際、できます。UIBarButtonItemのインスタンス メソッド を使用しますsetBackButtonBackgroundImage:forState:barMetrics:

したがって、すべての戻るボタンの背景画像を変更したい場合、コードは次のようになります。

UIImage *backButtonBgImageNormal = [[UIImage imageNamed:@"back_button_bg.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 15, 5, 5);];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonBgImageNormal forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
于 2013-07-26T09:12:10.873 に答える