在此站点上已经被询问了十多次,但是我没有找到适合我的答案。我有一个iPad应用程序,该应用程序在以编程方式创建的根级别具有UISplitViewController。在由用户交互触发的,显示在右窗格中的视图内部,将以编程方式创建UINavigationController并将其呈现给用户。这是该代码:

listenerController = [[UINavigationController alloc] initWithRootViewController:listenerView];
[listenerController.navigationBar setTintColor:[UIColor colorWithRed:185.0f/255.0f green:80.0f/255.0f blue:0.0f/255.0f alpha:1.0f]];

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    [listenerController setModalPresentationStyle:UIModalPresentationFormSheet];
    [listenerController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
    [listenerController setModalInPopover:YES];
}

[self presentModalViewController:listenerController animated:YES];
[listenerController release];


这样可以正确创建视图控制器,但是无论显示iPad的方向如何,iPad都将强制显示为纵向视图。然后,当我关闭模式窗口时,它将向后旋转。

我已经在右侧窗格的viewcontroller中将shouldAutorotateToInterfaceOrientation设置为YES,我什至尝试将其添加到主应用程序委托类中,但没有任何运气。似乎不必为了重载shouldAutorotateToInterfaceOrientation方法而必须继承UINavigationController类。

我是从错误的对象调用presentModalViewController吗?我试过[self presentModalViewController ...]以及[self.parentViewController presentModalViewController ...]都得到相同的结果。

最佳答案

我假设您的代码示例中的self是右视图(详细信息)视图控制器。您需要从根presentModalViewController调用UISplitViewController

关于iphone - 允许在以编程方式显示的以编程方式创建的 View 内自动旋转,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6283266/

10-13 09:29