如何在纵向模式iPad中显示UIsplitview的popover

时间:2010-09-02 15:52:39

标签: uisplitviewcontroller ipad uisplitview

我希望只要用户在iPad的UIsplitView中从横向视图切换到纵向视图,就可以看到弹出视图。虽然用户可以通过单击栏按钮使其可见,但我希望这是自动纵向模式。

3 个答案:

答案 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内调用它以便在启动时处理。