iPhone界面方向更改不返回纵向

时间:2012-11-13 16:27:52

标签: iphone ios uiinterfaceorientation autorotate

所以我有一个视图,当界面方向更改为横向时,我会以模态方式呈现。但是,当方向返回到纵向并且模态视图自行消失时,初始视图中的工作台视图将保持横向(此表视图必须仅为纵向)

以下是代码:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return ((interfaceOrientation == UIInterfaceOrientationPortrait) || (interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (interfaceOrientation == UIInterfaceOrientationLandscapeRight) );
}

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    if ((toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)) {
        [self performSegueWithIdentifier:@"showCatChart" sender:self];
    }
    if (toInterfaceOrientation == UIInterfaceOrientationPortrait) {
        [self refreshTableView];
    }
}

我试图刷新tableview,但这并没有让它再次成像... 这可能来自视图层次...... NavigationController-> tableView(仅限肖像) - > tableview-> landscapeViewModalController

2 个答案:

答案 0 :(得分:0)

在appdelegate中使用以下内容。

[self.window addsubview:viewcontroller];

仅此一项就可以解决您的定位问题。

答案 1 :(得分:0)

使用iOS 6,您需要实现以下功能:

- (BOOL)shouldAutoRotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskAll;
}

在AppDelegate中,您需要更改以下内容:

[self.window addSubview:viewController.view];

[self.window setRootViewController:viewController];

另外,如果您想支持以前版本的iOS,请保留当前代码。