Я собрал пример проекта, который будет отображать UIPopoverController над выбранным UITabBarItem.
http://mobileoverlord.com/displaying-a-uipopovercontroller-from-a-uitabbaritem/
Это содержит небольшой хакер, потому что вам нужно перебирать подпредставления TabBar.Кроме того, это может отличаться на iOS 5, потому что фоновое представление TabBar находится в массиве subview TabBar.Он реализован в методе делегата tabBarController
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
NSInteger index = [[self tabBarController] selectedIndex];
CGRect buttonFrame = [[[[[self tabBarController] tabBar] subviews] objectAtIndex:index+1] frame];
PopOverViewController *popoverView = [PopOverViewController new];
popoverView.contentSizeForViewInPopover = CGSizeMake(250, 300);
popover = [[UIPopoverController alloc]initWithContentViewController:popoverView];
NSLog(@"X:%f Y:%f",buttonFrame.origin.x,buttonFrame.origin.y);
[popover presentPopoverFromRect:buttonFrame inView:self.tabBarController.tabBar permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
}
. Вот пример кода.Не стесняйтесь комментировать и манипулировать.
https://github.com/mobileoverlord/UITabBarPopOver-Demo
Если вы хотите ограничить его только нажатием определенной кнопки, вы можете отфильтровать класс входящих viewController
следующим образом
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
if ([viewController isKindOfClass:[SecondViewController class]]) {
NSInteger index = [[self tabBarController] selectedIndex];
CGRect buttonFrame = [[[[[self tabBarController] tabBar] subviews] objectAtIndex:index+1] frame];
PopOverViewController *popoverView = [PopOverViewController new];
popoverView.contentSizeForViewInPopover = CGSizeMake(250, 300);
popover = [[UIPopoverController alloc]initWithContentViewController:popoverView];
NSLog(@"X:%f Y:%f",buttonFrame.origin.x,buttonFrame.origin.y);
[popover presentPopoverFromRect:buttonFrame inView:self.tabBarController.tabBar permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
}
}