Ios 如何从具有横向方向的视图控制器以模式方式显示具有纵向方向的新视图控制器?

Ios 如何从具有横向方向的视图控制器以模式方式显示具有纵向方向的新视图控制器?,ios,cocoa,ios7,Ios,Cocoa,Ios7,我有以横向模式显示的视图。我想以一个纵向的方式显示一个新的视图控制器(这样看起来像是从右侧滑入的)。当前,当我执行下面的代码时,它会以调用视图控制器的相同横向方向显示新的视图控制器。如何从具有横向方向的视图控制器以模式方式显示具有纵向方向的新视图控制器 这是我现有的代码 //This code is called from the landscape view controller - (void)showPortraitViewControllerButtonTapped { MyV

我有以横向模式显示的视图。我想以一个纵向的方式显示一个新的视图控制器(这样看起来像是从右侧滑入的)。当前,当我执行下面的代码时,它会以调用视图控制器的相同横向方向显示新的视图控制器。如何从具有横向方向的视图控制器以模式方式显示具有纵向方向的新视图控制器

这是我现有的代码

//This code is called from the landscape view controller

- (void)showPortraitViewControllerButtonTapped

{

  MyViewController *vc = [MyViewController new];

  UINaviationViewController *navVC = [[UINavigationViewController alloc] initWithRootViewController:vc];

  [self presentViewController:navVC animated:YES completion:nil];
}

//Code inside the view controller that I want to modally display in portrait orientation

@implementation MyViewController

(NSUInteger)supportedInterfaceOrientations 
{

   return UIInterfaceOrientationMaskPortrait;

}

@end

感谢你的智慧

不要在控制器上强制方向,因为您感兴趣的只是过渡,您应该控制过渡本身:

[self.navigationController.view.layer addAnimation:({
    CATransition *transition = [CATransition animation];
    transition.type = kCATransitionMoveIn;
    transition.subtype = kCATransitionFromTop;

    transition;
}) forKey:@"SlideFromRightInLandscapeLeft"];
[self.navigationController pushViewController:navVC animated:NO];
请注意,它使用的不是
-presentViewController
,而是
-pushViewController
。 关闭navVC,如下所示:

[self.navigationController popViewControllerAnimated:YES];

一系列提示。这里还有一个故事板解决方案: