隐藏UIPageViewController的当前页面

时间:2014-09-11 22:30:06

标签: ios objective-c swift uipageviewcontroller

我有一个小问题,与UIPageViewController有关。我使用Swift作为语言,但如果有人不熟悉这种新语言,我也会理解Obj-C代码。我的问题描述相对简单,但解决起来并不那么简单。我有一个UIPageViewController设置。在某些时候,如果用户将页面控制器的当前页面推到底部,页面应该消失(删除当前视图控制器)。我已经尝试了几件事。在继续之前,我将解释一下我的UIPageViewController的一些机制,这些机制可能有助于更简单的答案:

页面控制器不会通过一组预先配置的视图控制器进行滑动。一开始,它只需要一个视图控制器。其余的视图控制器是在用户通过数据源方法滑动时计算的:

func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
...
}

func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
...
}

添加的每个视图控制器都是一个自定义视图控制器的实例,它接受一个索引,该索引指示此视图控制器应加载的数据。页面控制器中页面的限制由可供自定义视图控制器加载的项目计数定义。

我尝试了一件事,它几乎奏效了。我现在正在描述你知道我的页面控制器机制:

  1. 我向下滑动当前页面并以图形方式消失
  2. 我正在从存储所有其他视频的文件夹中删除链接到当前(以及最近“已删除”)视图控制器的数据元素
  3. 我正在更新文件夹
  4. 中的元素数量

    这个解决方案的唯一问题是,毕竟这仍然需要用户滑动以查看更新...让我解释一下:在当前视图控制器消失后,我仍然在我面前有一块白色画布。 ..只有在用户滑动才能进入新页面后,才会执行两个数据源方法并且更新生效。滑动后,空白画布不再存在(如果我向后滑动),所有其他控制器都显示正确。我只需要做一件简单的事情:在视图控制器消失之后,我应该自动(以编程方式)向前滑动回视图控制器,以便调用两个数据源方法并更新所有内容...

    所以最后,也许我的问题应该更像是:“我如何以编程方式刷回到之前的UIPageViewController页面?”

    任何帮助将不胜感激!!

2 个答案:

答案 0 :(得分:1)

您可以使用setViewControllers:direction:animated:completion:作为记录here

答案 1 :(得分:1)

您可以使用UIPageViewController的setViewControllers:direction:animated:completion:方法。您可以在上面的第3步之后立即执行此操作。您可以选择是在删除数据元素之前使用viewController还是之后的数据元素。