1

UINavigationControllerを次のようにサブクラス化しました。

-(NSUInteger)supportedInterfaceOrientations {
    return [self.topViewController supportedInterfaceOrientations];
}

-(BOOL)shouldAutorotate {
     return self.topViewController.shouldAutorotate;
}

ただし、親とは異なる初期方向でViewControllerをプッシュすることに固執しました。私の場合、親ビューは縦向きのみです。

-(BOOL)shouldAutorotate {
    return NO;
}
-(NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}

ただし、プッシュされたビューが横向きのみであることを望みます。デバイスの向きを手動で変更した場合にのみ、そのように動作します。

-(BOOL)shouldAutorotate {
    return YES;
}
-(NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscape;
}

誰かが私を正しい方向に向けてくれてありがとう。(私は今のところハッキーな解決策しか持っていません...)


編集:

以下は、サブクラス化されたUINavigationControllerを開始する方法を示しています

PortraitView *vc = [[PortraitView alloc] init];
    SubClassedNav *navController = [[SubClassedNav alloc] initWithRootViewController:vc];
    [navController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
    [self presentViewController:navController animated:YES completion:nil];

そして、私がその後どのように新しい見方を推し進めるか:

LandscapeView *vc = [[LandscapeView alloc] init];
    [[self navigationController] pushViewController:vc animated:YES];
4

1 に答える 1

0

[window setRootViewController:controller]AppDelegateで設定したことを再確認してください。

于 2012-10-27T11:09:31.240 に答える