0

ナビゲーションバーとテーブルビューでシンプルなビューを作りたいです。そこで、のサブクラスを作成し、それUINavigationControllerに追加しUITableViewました。私もとUITableViewDataSourceですUITableViewDelegate。ナビゲーションバーに追加したいのですUIBarButtonが、機能しません:

UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc] initWithTitle:[[Translator instance] getTranslation:@"Back"] 
                                                                  style:UIBarButtonItemStylePlain 
                                                                 target:self.parentViewController  
                                                                 action:@selector(dismissFiltersModal:)];          
self.navigationItem.backBarButtonItem = anotherButton;

ビューは表示されますが、ボタンは表示されないというエラーはありません。どうすれば表示できますか?

4

3 に答える 3

1

は、現在表示されているものではなく、前のbackBarButtonItemViewControllerで設定する必要があります。たとえば、ビューAを表示している場合は、そこからBに移動すると、BではなくbackBarButtonItemBAが表示されます。

ナビゲーションバーの左側にアイテムを表示したいだけの場合は、leftBarButtonItem代わりに使用できます。これにより、そのコントローラーに通常のバーボタンが表示されます。ただし、通常の戻るボタンのような矢印ではなく、長方形になります。

于 2012-06-22T16:00:23.853 に答える
1

ジャファー、

Appleのドキュメントが示唆しているように、サブクラス化は避けるべきUINavigationControllerです。

このクラスはサブクラス化を目的としていません。

これを言って、あなたはこれらの簡単なステップに従うことができます(あなたのためのいくつかのアドバイス):

  • MyControllerここにテーブルを拡張UIViewControllerして追加するコントローラー(たとえば)を作成します。コントローラをそのテーブルのデリゲートおよびデータソースとして設定します。xibで作成した場合は、テーブルビュー用のアウトレットが必要です。

[ PS。サブクラス化することもできますUITableViewController。独自のテーブルビューがあります]

  • ナビゲーションバーviewDidLoadをカスタマイズします。MyController

例えば

UIBarButtonItem* myButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(someSelector)];
self.navigationItem.leftBarButtonItem = myButton;

タイトルをカスタマイズすることもできます。

例えば

self.title = @"Your custom title";
  • コードのどこかにを作成しUINavigationController、ルートビューコントローラーとしてのインスタンスを追加しますMyController

例えば:

MyController* myCtr = // alloc-init here
UINavigationController* nc = [[UINavigationController alloc] initWithRootViewController:myCtr];
于 2012-06-22T16:21:34.263 に答える
1

これを試してみてはどうですか:

UIButton* backButton = [UIButton buttonWithType:101]; // left-pointing shape!
        [backButton addTarget:self action:@selector(dismissFiltersModal:) forControlEvents:UIControlEventTouchUpInside];
        [backButton setTitle:@"Back" forState:UIControlStateNormal];

// create button item -- 
UIBarButtonItem* backItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];

// add to toolbar
self.navigationItem.leftBarButtonItem = backItem;
于 2012-06-22T16:24:58.870 に答える