我正在尝试为我的 UISplitViewController 的主视图控制器实现隐藏/取消隐藏功能。因此主视图控制器应该以纵向和横向模式存在,但仅适用于特定视图(设置)。在其他任何地方,它都应该只出现在横向中。
在-(void)viewDidAppear:(BOOL)animated
我的 MasterController 我正在写
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 上找到的这种方法确实很有效,但只要我旋转设备。然后主视图控制器消失(并留下一个黑色空间)。旋转时它会出现,一旦旋转完成,它就会再次消失。此外,如果我在外部单击,主视图控制器将完全消失。
所以我实现了下面的委托方法来防止弹出框消失
- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
{
return NO;
}
这也有效,但是我的详细视图的 tableView 没有响应。
如果我从-(void)viewDidAppear:(BOOL)animated
UIPopoverControllerDelegate 方法中删除代码,它会按预期工作,但就在我旋转设备之后。
所以我的问题是,如果有人知道我该如何解决这个问题。该解决方案应该能够与 iOS 5.0 和更高版本一起使用。
非常感谢你的回答!