2

私はこのように呼ばれるフルスクリーンのmodalViewを持っています:

PreferencesController *nextWindow = [[[PreferencesController alloc] initWithNibName:@"Preferences" bundle:nil] autorelease];
UINavigationController* navController = [[[UINavigationController alloc] initWithRootViewController:nextWindow] autorelease];
[self presentModalViewController:navController animated:YES];

次に、このmodalViewから別のビューをプッシュします。

    MyController *nextWindow = [[[MyController alloc] initWithNibName:@"tmp" bundle:nil] autorelease];
    [self.navigationController pushViewController:nextWindow animated:YES];

この新しいコントローラーには、次のviewDidLoadがあります。

- (void)viewDidLoad {
    [super viewDidLoad];

    self.title = @"Borders";
    self.navigationController.navigationBarHidden = NO;
}

leftBarButtonItemはアクティブではありません。つまり、それをタッチしてもハイライトされたり、前のビューに戻ったりすることはありません。

私のビューはフルスクリーンで表示さ[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];れ、アプリケーションの初期化時に呼び出されます。

NavigationBarフレームは0,0,320,44です。
NavigationBarのスーパービューフレームは0,0,320,480です。
viewControllerビューフレームは0,0,320,436です。

viewDidLoadを呼び出してみましたが、効果はself.navigationController.navigationBar.userInteractionEnabled = YES;ありself.navigationItem.leftBarButtonItem.enabled = YES;ません。

何が起こるのですか?

編集:
私のself.navigationController.navigationItem.backBarButtonItemはNILです。self.navigationController.navigationItemはNILではありません

4

3 に答える 3

1

この種の無反応が私に起こるときはいつでも、それは常にフレーミングの問題のためです。つまり、NavigationControllerのスーパービューはNavigationControllerのビューよりも小さくなります。すべてがフルスクリーンに設定されているとおっしゃっていますが、階層内の各ビューで「clipsSubviews」をオンにすることで、すべてが実際にフルスクリーンであることを確認します。

于 2011-03-19T16:31:45.947 に答える
0

私はちょうどこの問題を抱えていました、なぜこれが機能するのかわかりませんが、代わりに:

UIBarButtonItem *backButton =
[[[UIBarButtonItem alloc] initWithTitle:@"Back"
                                  style: UIBarButtonItemStyleBordered
                                 target:nil
                                 action:nil] autorelease];

self.navigationItem.leftBarButtonItem = backButton;

2行目を

 self.navigationController.navigationItem.leftBarButtonItem = backButton;

それは私にとってはうまくいきます。

于 2011-03-20T00:37:26.390 に答える
0

私は解決策を見つけました。問題は、最初のビューがピッカーからではなく、オーバーレイから呼び出されたことです。ピッカーへの参照をオーバーレイに保持し、そこからビューを呼び出すと、問題が解決します。

オーバーレイから:

[self.picker presentModalViewController:navController animated:YES];

作品

それ以外の:

[self presentModalViewController:navController animated:YES];
于 2011-03-21T23:25:38.470 に答える