以特定视图的纵向和横向模式显示UISplitViewController的主视图控制器

时间:2013-02-20 10:19:17

标签: ios ipad rotation uisplitviewcontroller

我正在尝试为我的UISplitViewController的主视图控制器实现隐藏/取消隐藏功能。因此,主视图控制器应该以纵向和横向模式存在,但仅适用于特定视图(设置)。它应该只出现在景观中。

在我的MasterController的-(void)viewDidAppear:(BOOL)animated我正在写

self.popoverController.delegate = self;
appDelegate.splitViewController.delegate= nil;
appDelegate.splitViewController.delegate = self;
[appDelegate.splitViewController willRotateToInterfaceOrientation:self.interfaceOrientation duration:0];
[appDelegate.splitViewController didRotateFromInterfaceOrientation:self.interfaceOrientation];
appDelegate.splitViewController.view setNeedsLayout];

也设置了委托方法

- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation
{    
    return NO;
}

我在stackoverflow上找到的这种方法确实很有效,但只要我旋转设备。然后主视图控制器消失(并留下黑色空格)。当旋转它出现时,旋转完成后它会再次消失。此外,如果我点击外面,主视图控制器将完全消失。

所以我实现了以下委托方法来防止popover消失

- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
{
    return NO;
}

也可以,但是我的详细信息视图的tableView没有响应。

如果我从-(void)viewDidAppear:(BOOL)animated和UIPopoverControllerDelegate方法删除代码,它会按预期工作,但是在我旋转设备之后。

所以我的问题是,如果有人知道如何解决这个问题。该解决方案应该能够与iOS 5.0及更高版本一起使用。

非常感谢您的回答!

0 个答案:

没有答案