我正在开发一款应该是通用的应用,一款适用于iPad和iPhone的应用。我想保持他们的接口尽可能相似。在iPhone应用程序中,我使用Tab栏控制器,其中一个选项卡转到图像选择器控制器。显然我不能在iPad上做到这一点。所以我劫持了对该按钮的控制,带来了一个带有图像选择器的popupcontroller。这一切都运行得很好,除非我弹出弹出窗口,它不在正确的位置。当我旋转模拟器时,弹出窗口会转到正确的位置,并在我向后旋转时停留。
我的代码基于此问题中的代码: Ipad UIImagePickerController and UIPopoverController error
为什么我的弹出窗口不在正确的位置?
答案 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;