0

次のコードを使用して、アプリの「戻る」ボタンを作成しようとしています。このコードが配置されているビューは、モーダルビューになっています(関係がある場合)。

navBar = [[UINavigationController alloc] initWithRootViewController:tvController];

[navBar.view setFrame:CGRectMake(0, 0, 320, 460)];
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle: @"Back"
                                                                           style: self.navigationController.navigationItem.leftBarButtonItem.style
                                                                          target: self
                                                                          action: @selector(backAction)];
navBar.navigationItem.backBarButtonItem.enabled = YES;

[self.view addSubview:navBar.view];

ビューがまったく表示されません。ヒントをありがとうございます。

編集:leftBarButtonItemを使用しても表示されません、コードのself.navigationItemビットに問題があると思いますか?

4

2 に答える 2

3

UINavigationControllerでラップするモーダルビューを表示するときに、操作するための有効なナビゲーションバーがあることを確認する必要があります。それ以外の場合は、navigationItemを必要に応じて変更しますが、navigationControllerを使用していないため、表示されません。

したがって、View Controllerを提示するときは、おそらく次のようなことをしていることになります。

SomeViewController *someViewController = [[[SomeViewController alloc] init] autorelease];
[self presentModalViewController:someViewController animated:YES];

あなたがしたいのは、このようにそれを提示することです

SomeViewController *someViewController = [[[SomeViewController alloc] init] autorelease];
UINavigationController *navigationController = [[[UINavigationController alloc] initWithRootViewController:someViewController] autorelease]
[self presentModalViewController:navigationController animated:YES];

次に、モーダルビューを表示すると、操作可能な有効なナビゲーションバーが表示されます。その時点でleftBarButtonItemを変更すると、実際に何かが実行され、表示されます。

おそらく「間違ったことをしている」にもかかわらず、これに戻るボタンを表示させようとしている場合、通常、このようなモーダルなものを提示している場合は、「完了」ボタンを表示します。ただし、これをこのようなナビゲーションコントローラーでラップすると、モーダルビューでビューコントローラーをプッシュおよびポップして、通常のナビゲーションスタックとして動作できるようになります。しかし、そのルートには、前の状態に戻るために戻るのではなく、おそらく「完了」ボタンが必要です。

于 2012-06-27T15:52:08.273 に答える
1

プロパティは、スタック内の前のアイテム、つまり現在backBarButtonItemのアイテムではなく、戻るビューコントローラーで定義する必要があります。

編集:

OK、今あなたはあなた自身のカスタムナビゲーションバーを追加しているようです。その場合、ViewControllerのナビゲーション項目は使用できません。代わりに、独自のナビゲーションアイテムをナビゲーションバーにプッシュして、代わりにそれらにアクセスする必要があります。例えば:

UINavigationItem *item = [[UINavigationItem alloc] initWithTitle:@"Back"];
item.leftBarButtonItem = ...;
[navBar pushNavigationItem:item animated:NO];
于 2012-06-27T15:28:09.633 に答える