Ios 如何构建动态UIPageViewController
我按照基本教程创建了一个UIPageViewController,它可以浏览不同的ViewController,所有这些都是我在Main.Storyboard上创建的。我想创建一个生成动态ViewController的应用程序,这意味着我必须以编程方式实例化UIPageViewController中的ViewController 然而,我正试图让一切更进一步。我将根据Firebase中的数据显示一组动态ViewController。在每次滑动时,我想实例化一个将包含图像的视图(图像将存储在Amazon Web服务上,图像的链接将存储在Firebase中)。我目前在Android应用程序中有这个设置,并使用毕加索将图像加载到我的片段中 由于所有数据都将是动态的,我想找到最好的方法: -基于每天更改的动态firebase数据实例化新的ViewController -让每个ViewController显示我存储在Firebase中的相关图像 所有ViewController都将具有相同的“骨架”,这意味着每个ViewController都将有一个带有一些文本的图像。下面是我目前的代码,我希望得到一些建议/帮助Ios 如何构建动态UIPageViewController,ios,swift,firebase,viewcontroller,uipageviewcontroller,Ios,Swift,Firebase,Viewcontroller,Uipageviewcontroller,我按照基本教程创建了一个UIPageViewController,它可以浏览不同的ViewController,所有这些都是我在Main.Storyboard上创建的。我想创建一个生成动态ViewController的应用程序,这意味着我必须以编程方式实例化UIPageViewController中的ViewController 然而,我正试图让一切更进一步。我将根据Firebase中的数据显示一组动态ViewController。在每次滑动时,我想实例化一个将包含图像的视图(图像将存储在Ama
import UIKit
class PageViewTutorial: UIPageViewController {
override func viewDidLoad() {
super.viewDidLoad()
dataSource = self
if let firstViewController = orderedViewControllers.first {
setViewControllers([firstViewController],
direction: .Forward,
animated: true,
completion: nil)
}
}
//this will be dynamic based on firebase data
private(set) lazy var orderedViewControllers: [UIViewController] = {
return [self.newColoredViewController("Green"),
self.newColoredViewController("Red"),
self.newColoredViewController("Blue")]
}()
private func newColoredViewController(color: String) -> UIViewController {
return UIStoryboard(name: "Main", bundle: nil) .
instantiateViewControllerWithIdentifier("\(color)ViewController")
}
}
// MARK: PageViewTutorialDataSource
extension PageViewTutorial: UIPageViewControllerDataSource {
func pageViewController(pageViewController: UIPageViewController,
viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
guard let viewControllerIndex = orderedViewControllers.indexOf(viewController) else {
return nil
}
let previousIndex = viewControllerIndex - 1
guard previousIndex >= 0 else {
return nil
}
guard orderedViewControllers.count > previousIndex else {
return nil
}
return orderedViewControllers[previousIndex]
}
func pageViewController(pageViewController: UIPageViewController,
viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
guard let viewControllerIndex = orderedViewControllers.indexOf(viewController) else {
return nil
}
let nextIndex = viewControllerIndex + 1
let orderedViewControllersCount = orderedViewControllers.count
guard orderedViewControllersCount != nextIndex else {
return nil
}
guard orderedViewControllersCount > nextIndex else {
return nil
}
return orderedViewControllers[nextIndex]
}
}
在发表新评论后,我会这样做:
嗨,最后的目标是什么?它应该如何为用户工作?它看起来像一个图片库,如果是这样的话,我认为你不需要“有一套动态的视图控制器”。您只需要一个cell.size=screen.size的集合视图。不管怎样,如果你需要这个集合,我认为通过它的变量初始化它是更好的方法。请提供更多细节。它基本上是一个轮询应用程序。每天,我都会有一定数量的民意测验。我希望每个ViewController都使用一个图像、一个问题和投票按钮来表示投票。这是动态的,因为在第一天可能有10次投票,在第二天可能只有3次投票。。。。