0

ナビゲーションバーがあるすべてのビューに表示されるようにボタンを設定しようとしていました。AppDelegate で外観プロキシを使用して、すべてのビューの外観を設定することは問題ではありません

[[UINavigationBar appearance] setTintColor:[UIColors grayColor]];

UINavigationController をサブクラス化し、そのナビゲーション コントローラーをストーリーボードに設定しようとしていました。viewDidLoad私がこれを試した方法で:

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"right"
                                                                         style:UIBarButtonItemStyleBordered target:self action:nil];

しかし、ボタンが表示されません。

私がこれを行う場合:

self.navigationBar.topItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"right"
                                                                         style:UIBarButtonItemStyleBordered target:self action:nil];

ボタンは表示されますが、次の画面に進むと消えます。

私はそれをやろうとしているのでviewDidLoad、各View Controllerのすべてのメソッドで左右のボタンを設定する必要はありません。UINavigationController のサブクラスを使用して navbar の属性を設定することは可能ですか?

4

1 に答える 1

0

Apple は、UINavigationController をサブクラス化しないように指示しています。

このクラスは、サブクラス化を意図していません。代わりに、コンテンツの階層的な性質をアプリケーションのユーザー インターフェイスに反映させたい場合は、そのインスタンスをそのまま使用します。

これはドキュメントの XCode バージョンからのものです。オンライン版は少し緩み、そのアドバイスを次のように置き換えます。

このクラスは通常そのまま使用されますが、iOS 6 以降ではサブクラス化される場合があります。

変更された viewDidLoad を使用して UIViewController のカスタム サブクラスを作成し、それに基づいてすべてのカスタム VC を作成するのはどうですか?

于 2013-01-16T02:18:48.233 に答える