在导航控制器中嵌入三个 UITableView 的 UIPageViewController

Posted

技术标签:

【中文标题】在导航控制器中嵌入三个 UITableView 的 UIPageViewController【英文标题】:UIPageViewController with three UITableViews embedded in Navigation Controllers 【发布时间】:2015-05-22 01:14:32 【问题描述】:

我创建了三个不同的UITableViewControllers,它们最初嵌入在UITabBarController 中,但我决定改用pageControl。我已经删除了选项卡栏,但我不知道如何以“编程方式”创建一个 pageView,最好使用已经创建的三个 tableview


我以前使用过 pageControl,但只是使用一个视图控制器进行简单的操作,并根据页面控件更改该视图的内容。


NSArray *viewControllers = [[NSArray alloc]initWithObjects:[self.storyboard instantiateInitialViewController], nil];
self.pageViewController = [[UIPageViewController alloc]initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
self.pageViewController.delegate = self;
self.pageViewController.dataSource = self;
[self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:NULL];

我也想过并尝试了一个简单的向右滑动手势作为转场,但由于某种原因它不起作用。任何帮助或建议表示赞赏。谢谢。

【问题讨论】:

【参考方案1】:

你实现UIPageViewControllerDataSource这两个必需的方法了吗?

直接来自docs: “要支持基于手势的导航,您必须使用数据源对象提供视图控制器。”

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
  viewControllerBeforeViewController:(UIViewController *)viewController

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
   viewControllerAfterViewController:(UIViewController *)viewController

【讨论】:

以上是关于在导航控制器中嵌入三个 UITableView 的 UIPageViewController的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 导航控制器动态细节

UITableView 重新加载 - Xcode 5

从 iOS 11 搜索控制器导航时不需要的 UITableView 重新加载动画

为啥嵌入 UINavigationController 时不再显示 UITableView

以编程方式从嵌入导航控制器的视图中解除弹出窗口

以模态方式将嵌入在导航控制器中的视图控制器与标签栏控制器分开