#ios #uitableview #uipageviewcontroller
#iOS #uitableview #uipageviewcontroller
Вопрос:
Моя архитектура viewcontrollers такова:
mainViewController(full-screen)
|
V
pageViewController(part-of-screen)
| |
V V
tableViewController1 tableViewController2
В отличие от большинства существующих сообщений, для UIPageViewController установлено значение style: UIPageViewControllerTransitionStyleScroll, что означает, что pageVC.gestureRecognizers пуст, и я НЕ могу найти tapGuesture для отключения.
Я искал сайт целый день и не нашел решения (большинство ответов связаны с pageCurlStyle). То, что я пробовал, включает:
- установка делегата TableViewController.view для MainViewController, бесполезно
- реализовать распознаватель жестов: shouldReceiveTouch, даже не вызывается
- pageVC.gestureRecognizers пуст
Я не пытался делать вещи на уровне UITouch, которые будут немного грязными, и это был бы последний шаг, который нужно попробовать.
Мой код прилагается ниже, некоторые пояснения:
- UIPageViewController * pageVC является элементом данных MainViewController)
- listVCs содержит UITableViewControllers
код:
// 3. create page view controller
pageVC = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
pageVC.dataSource = self;
pageVC.delegate = self;
pageVC.doubleSided = NO;
pageVC.view.frame = _viewLayoutRef.frame;
// 3.1 set the VCs into pageVC
NSArray* aVC = @[[listVCs objectAtIndex:0]];
[pageVC setViewControllers:aVC direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
// 3.2 hook page view controller
[self addChildViewController:pageVC];
[self.view addSubview:pageVC.view];
[pageVC didMoveToParentViewController:self];
Комментарии:
1. Можете ли вы попробовать UITableView вместо контроллера UITableView, потому что он работает у меня.
2. @jailani спасибо за ваш комментарий. Но UIPageViewController — это контейнер контроллера, который управляет UIViewControllers, а не самим UIView. Я не уверен, как добавить UITableView в UIPageViewController без UITableViewController…
3. Из вашей иерархии представлений… Вы правильно передаете контроллеры просмотра (UITableViewController) в контроллер uipageview… Вместо UITableViewController вы можете создать uiviewcontroller, в который вы можете добавить UITableView
4. @jailani Это потрясающе, ты потрясающий! Это работает, как вы это находите?… Я думал, что UIViewController UITableView == UITableViewController, но оказывается, что они такие разные. Спасибо! НО один оставшийся вопрос: почему это работает? Это так волшебно…
5. Я думал, что у вас нет файлов .h .m для вашего контроллера uitableview, поэтому я предлагаю только этот способ.
Ответ №1:
Из вашей иерархии представлений…Вы передаете контроллеры просмотра ( UITableViewcontroller
) UIPageViewController
вправо? Вместо UITableViewController
вы можете создать UIViewController
, в который вы можете добавить UITableview
.
Комментарии:
1. Как это будет работать ..?!?! У меня точно такая же проблема, и у меня есть ViewControllers с UICollectionView внутри них, но я нахожу проблемы с выбором там тоже ..!
2. Не могли бы вы объяснить свою проблему?