Ios 用服务器上的数据填充UIPageViewController?

Ios 用服务器上的数据填充UIPageViewController?,ios,swift,firebase-realtime-database,Ios,Swift,Firebase Realtime Database,我希望实现的主要功能是,用户向左/向右滑动,下一页从侧面滑入,两个屏幕都半显示,直到滑动到下一页完成。我在页面视图控制器中看到过这一功能,但我不确定这是一个方向 我还没有从Firebase之类的服务器数据中动态创建视图控制器,而且我几乎没有使用页面视图控制器的经验,但是如果我只是在寻找左/右滚动条,这是一种方法吗 如果我有300个页面,我可能需要用户浏览,让用户先下载300张图片不是很糟糕吗 或多或少,我只是在尝试之前寻找指导,因为我仍然不确定从哪里开始 使用可以实现的PageViewContr

我希望实现的主要功能是,用户向左/向右滑动,下一页从侧面滑入,两个屏幕都半显示,直到滑动到下一页完成。我在页面视图控制器中看到过这一功能,但我不确定这是一个方向

我还没有从Firebase之类的服务器数据中动态创建视图控制器,而且我几乎没有使用页面视图控制器的经验,但是如果我只是在寻找左/右滚动条,这是一种方法吗

如果我有300个页面,我可能需要用户浏览,让用户先下载300张图片不是很糟糕吗


或多或少,我只是在尝试之前寻找指导,因为我仍然不确定从哪里开始

使用可以实现的PageViewController。遵循以下步骤:

  • 通过拖动UIPageViewController设计屏幕(Xib或使用故事板)
  • 设置其委托并实现委托方法
  • 重要的一步是配置在转换期间需要多少页面
  • viewControllerAfterViewController和ViewControllerBeforReviewController这两种方法需要配置,因为它加载上一个和下一个屏幕
  • 现在,只要您需要子类:这个viewcontroller,并相应地加载这个xib

    下面是一些代码示例:

    func pageViewController(pageViewController: UIPageViewController,
        viewControllerAfterViewController ProView: UIViewController) -> UIViewController? {
    
            let itemController = ProView as PageItemController
    
            if itemController.itemIndex+1 < characterImages.count {
                return getItemController(itemController.itemIndex+1)
            }
    
            return nil
    }
    
    func pageViewController(pageViewController: UIPageViewController,
        viewControllerBeforeViewController ProView: UIViewController) -> UIViewController? {
    
        let itemController = ProView as PageItemController
    
            if itemController.itemIndex > 0 {
                return getItemController(itemController.itemIndex-1)
            }
    
            return nil
    }
    
    private func getItemController(itemIndex: Int) -> PageItemController? {
    
        if itemIndex < characterImages.count {
            let pageItemController = self.storyboard!.instantiateViewControllerWithIdentifier("ItemController") as PageItemController
            pageItemController.itemIndex = itemIndex
            pageItemController.imageName = characterImages[itemIndex]
            return pageItemController
    }
    
    func pageViewController(pageViewController:UIPageViewController,
    viewControllerAfterViewController ProView:UIViewController)->UIViewController?{
    让itemController=ProView作为PageItemController
    如果itemController.itemIndex+1UIViewController?{
    让itemController=ProView作为PageItemController
    如果itemController.itemIndex>0{
    返回getItemController(itemController.itemIndex-1)
    }
    归零
    }
    私有函数getItemController(itemIndex:Int)->PageItemController?{
    如果itemIndex

    希望有帮助。

    谢谢你的帮助。我想页面视图肯定是我想要使用的,你是对的。不过,就从firebase下载图像而言……在tableview中,如果我有一个300个项目长的列表,它会使用可重复使用的单元格下载它们,而不会立即全部下载。使用这种方法,我不会这样做吗o必须下载存储在阵列中的每一张图片以用于我的characterImages阵列?我可以使用缓存,我认为300将是一种罕见的情况,但这不是数据/应用程序在发生过载时会出现一个大问题吗?我想我可以在getItem中执行下载,而不是使用数据阵列有索引的控制器是吗?我可能会有一个“Person”对象,我可以下载personArray[itemIndex]的图像.imageURL?最好在用户滚动时下载图像这可以改善用户交互如果你成功了,你能分享一个例子吗?我也在尝试让它与UIPageViewController一起工作,但我没有得到预期的结果。谢谢!:)