我正在尝试为我的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及更高版本一起使用。
非常感谢您的回答!