Ios 如何在方向更改时显示新的ViewController?

Ios 如何在方向更改时显示新的ViewController?,ios,objective-c,Ios,Objective C,我正在尝试重新创建一种类似于iOS音乐应用程序的效果,即当手机从垂直方向翻转到水平方向时(音乐应用程序显示相册封面),我希望在我的应用程序中显示一个全新的视图。我似乎无法让它正常工作。到目前为止,我已经尝试了以下几种变体: - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { T

我正在尝试重新创建一种类似于iOS音乐应用程序的效果,即当手机从垂直方向翻转到水平方向时(音乐应用程序显示相册封面),我希望在我的应用程序中显示一个全新的视图。我似乎无法让它正常工作。到目前为止,我已经尝试了以下几种变体:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    TMFHorizontalFavoritesViewController *horizontalVC = [[TMFHorizontalFavoritesViewController alloc] init];

    UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;
    if (UIDeviceOrientationIsLandscape(deviceOrientation)) {
    [self presentViewController:horizontalVC animated:YES completion:nil];
    }
}

但充其量我只能得到一个黑屏。我曾尝试在Stackoverflow上搜索类似的问题,但我似乎无法拼凑出正确的答案。如果任何人有任何意见,将不胜感激

如果有一条建议我可以给新的iOS程序员,那就是永远不要用alloc init实例化视图控制器(有时它是合法的,但新手几乎总是弄错)

这就是如何使用故事板定义的控制器

TMFHorizontalFavoritesViewController *horizontalVC = [self.storyboard instantiateViewControllerWithIdentifier:@"MyIdentifier"];

您在哪里创建TMF横向收藏夹查看控制器视图?故事板?Xib?在故事板中创建的。谢谢你!今后我一定会记住这一点(学习Objective-C和iOS仅几周)。有没有可能你应该告诉我为什么这会破坏我的尝试?@ImpurestClub,使用alloc init创建一个新的视图控制器,其中包含一个空白视图,因为你没有告诉控制器从哪里获取视图。如果您在xib中创建视图,那么应该使用initWithNibName:bundle:以及我在回答中针对故事板中创建的控制器使用的方法。如果在代码中创建视图,则可以使用alloc init,这是通过重写loadView实现的。