UITabBarController с UIPopOverController - PullRequest
       2

UITabBarController с UIPopOverController

3 голосов
/ 31 января 2012

Я получил требование, когда мне нужно реализовать UIPopOverController из UITabBarController, то есть в UITabBarController, когда я нажимаю одну из вкладок, которая называется, например, «pop», тогда всплывающее окно должно отображаться с двумя полями.Мой вопрос в том, что является лучшим способом для достижения этой цели.В случае, если есть какой-либо пример видео или просто какой-то объясненный материал, вы также можете поделиться ссылками со мной.Просто терпите меня, потому что я становлюсь мокрым в среде ios.

Будем благодарны за любые предложения!

Спасибо, Макс

Ответы [ 2 ]

0 голосов
/ 15 июля 2016

Это мое решение, в котором я находился, "https://github.com/mobileoverlord/UITabBarPopOver-Demo" на основании вышеуказанных модификаций, ниже приведена моя демоверсия.https://github.com/mrhyh/iPad/tree/master/

0 голосов
/ 31 января 2012

Я собрал пример проекта, который будет отображать 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];
    }
}
...