我希望只要用户在iPad的UIsplitView中从横向视图切换到纵向视图,就可以看到弹出视图。虽然用户可以通过单击栏按钮使其可见,但我希望这是自动纵向模式。
答案 0 :(得分:4)
在“ - (BOOL)shouldAutorotateToInterfaceOrientation”方法中,检查设备方向。如果是肖像,则按照用户单击条形按钮时显示弹出窗口。
一切顺利。
答案 1 :(得分:2)
UISplitViewController将消息发送给他的委托(UISplitViewControllerDelegate)。您可以实现此委托方法来显示弹出窗口。您可以在“详细控制器”代码中执行以下操作:
#pragma mark -
#pragma mark UISplitViewControllerDelegate implementation
- (void)splitViewController:(UISplitViewController*)svc
willHideViewController:(UIViewController *)aViewController
withBarButtonItem:(UIBarButtonItem*)barButtonItem
forPopoverController:(UIPopoverController*)pc
{
[barButtonItem setTitle:@"Your 'popover button' title"];
self.navigationItem.leftBarButtonItem = barButtonItem;
}
- (void)splitViewController:(UISplitViewController*)svc
willShowViewController:(UIViewController *)aViewController
invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
self.navigationItem.leftBarButtonItem = nil;
}
答案 2 :(得分:1)
接受的答案(使用shouldAutorotateToInterfaceOrientation
)对我不起作用。它要么具有旋转伪像(在4.2和5.0 iPad模拟器中),要么仅在启动时显示,而在后续旋转中不再显示(4.3模拟器)。我所做的是创建一个小帮助函数:
- (void)showPopoverInPortrait {
if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait) {
[self.masterPopoverController presentPopoverFromBarButtonItem:self.navigationItem.leftBarButtonItem
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
}
}
并在- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
和- (void)viewDidLoad
内调用它以便在启动时处理。