UITabBarController与UIPopOverController

时间:2012-01-31 13:04:23

标签: ios ipad xcode4.2

我有一个要求,我需要从UITabBarController实现UIPopOverController,当我单击其中一个被调用的选项卡(例如“pop”)时,在UITabBarController中,然后popover应显示两个字段。我的问题是,实现这一目标的最佳方法是什么。如果有任何视频示例或只是一些解释的材料,那么您也可以与我分享链接。只是忍受我,因为我在ios环境中弄湿了脚。

任何建议都将不胜感激!

由于 MAKS

2 个答案:

答案 0 :(得分:0)

我整理了一个示例项目,该项目将在所选UITabBarItem上方显示UIPopoverController。

http://mobileoverlord.com/displaying-a-uipopovercontroller-from-a-uitabbaritem/

这包含一些小问题,因为您需要遍历TabBar的子视图。此外,它可能在iOS 5上有所不同,因为TabBar的背景视图位于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];
    }
}

答案 1 :(得分:0)

这是我的解决方案,我在“https://github.com/mobileoverlord/UITabBarPopOver-Demo”的基础上进行了上述修改,以下是我的演示。 https://github.com/mrhyh/iPad/tree/master/