1

我正在尝试为我的 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)animatedUIPopoverControllerDelegate 方法中删除代码,它会按预期工作,但就在我旋转设备之后。

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

非常感谢你的回答!

4

0 回答 0