UITabBarController с UIPopOverController
Я получил требование, когда мне нужно реализовать UIPopOverController из UITabBarController, который находится в UITabBarController, когда я нажимаю одну из вкладок, которая называется, например, «pop», тогда popover должен отображаться с двумя полями. Мой вопрос в том, что лучший способ достичь этого. В случае, если есть какой-либо пример либо видео, либо только некоторые объясненные материалы, вы также можете поделиться ссылками со мной. Просто медведь со мной, так как я мочу ноги в окружающей среде.
Мы ценим любые предложения!
Спасибо Максу
- Пакетная сборка и архивирование приложений iOS через терминал
- выпадающий список не отображается в Xcode 4 при подшивке кода
- Серый GPS-стрелка отображается в строке состояния, хотя приложение, основанное на местоположении, было убито с помощью Fast App Switcher
- Проблема с сетчатой сетью высокого разрешения iPad3
- Как инициализируется представление при загрузке через раскадровку?
- Скрыть кнопку одним касанием
- Как использовать пользовательские шрифты в iPhone SDK?
- Crash / SIGABRT, когда я пытаюсь представить UIPopoverController
- Ошибка XCode «Комплект приложений не содержит допустимого идентификатора».
- Пользовательская настройка высоты ячейки ячейки в раскадровке не отвечает
- Как сохранить выбранную MKAnnotation?
- Действительно ли ARC поддерживается в iOS 4? В iOS 4.2 SDK отсутствуют символы, связанные с ARC, при соединении времени
- Как добавить начальное представление в файл раскадровки?
Я собрал образец проекта, который отобразит 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]; } }
Это мое решение, в котором я находился, « https://github.com/mobileoverlord/UITabBarPopOver-Demo » на основе указанных выше модификаций. Ниже приведена моя демоверсия. https://github.com/mrhyh/iPad/tree/master/