UIPopoverController放置

时间:2011-03-11 20:54:37

标签: ios ipad orientation uipopovercontroller

我正在开发一款应该是通用的应用,一款适用于iPad和iPhone的应用。我想保持他们的接口尽可能相似。在iPhone应用程序中,我使用Tab栏控制器,其中一个选项卡转到图像选择器控制器。显然我不能在iPad上做到这一点。所以我劫持了对该按钮的控制,带来了一个带有图像选择器的popupcontroller。这一切都运行得很好,除非我弹出弹出窗口,它不在正确的位置。当我旋转模拟器时,弹出窗口会转到正确的位置,并在我向后旋转时停留。

我的代码基于此问题中的代码: Ipad UIImagePickerController and UIPopoverController error

为什么我的弹出窗口不在正确的位置?

1 个答案:

答案 0 :(得分:3)

如果您的代码基于您引用的问题,则可能会显示您使用以下代码来显示popover:

[popoverController presentPopoverFromBarButtonItem:sender
                          permittedArrowDirections:UIPopoverArrowDirectionUp 
                                          animated:YES]

UIPopoverController:presentPopoverFromBarButtonItem:allowedArrowDirections:animated接受UITabBar没有的发件人的UIBarButtonItem *。 UITabBar使用UITabBarItem,它具有UIBarItem的基础。 UIBarButtonItem也有该基础(UIBarItem)。

无论如何......我还需要从tabbaritem显示一个uipopovercontroller,我使用了以下代码:

MyViewController *myVC = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:[NSBundle mainBundle]];
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:myVC];
[myVC release];
popover.popoverContentSize = myVC.view.frame.size;
popover.delegate = self;
int tabBarItemWidth = self.tabBar.frame.size.width / [self.tabBar.items count];
int x = tabBarItemWidth * 6;
CGRect rect = CGRectMake(x, 0, tabBarItemWidth, self.tabBar.frame.size.height);
[popover presentPopoverFromRect:rect
                         inView:self.tabBar 
       permittedArrowDirections:UIPopoverArrowDirectionUp 
                       animated:YES];

注意:您的x计算会有所不同。为我选择的标签栏项目是第6个。 基本上

x = tabBarItemWidth * currentTabBarItemIndex;