Ios 如何在swift中重置/重新加载UI页面控制器视图

Ios 如何在swift中重置/重新加载UI页面控制器视图,ios,swift,uipageviewcontroller,Ios,Swift,Uipageviewcontroller,我正在寻找如何重新加载UI页面控制器。 在表VC上,我添加了UIHeaderView并嵌入了UIPage VC。 页面VC正在从firebase动态加载图像。 第一次加载正确的图像集时,在表VC上选择其他cel时,页面VC需要刷新其数据。 如何实现此功能 这是我为第VC页写的女生 //-----PAGE VC CODE------ import UIKit import Firebase protocol ProductImagesPageVCDelegate: class { fun

我正在寻找如何重新加载UI页面控制器。 在表VC上,我添加了UIHeaderView并嵌入了UIPage VC。 页面VC正在从firebase动态加载图像。 第一次加载正确的图像集时,在表VC上选择其他cel时,页面VC需要刷新其数据。 如何实现此功能 这是我为第VC页写的女生

//-----PAGE VC CODE------
import UIKit
import Firebase

protocol ProductImagesPageVCDelegate: class
{
    func setupPageController(numberOfPages: Int)
    func turnPageController(to index: Int)
}

class ProductImagesPageVC: UIPageViewController {

    var product: Product!

    weak var pageViewControllerDelegate: ProductImagesPageVCDelegate?

    struct StoryBoard {
        static let productImageVC = "ProductImageVC"
    }

    lazy var controllers: [UIViewController] = {

        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        var controllers = [UIViewController]()

        if let imageLinks = self.product.imageLinks
        {
            for imageLink in imageLinks
            {
                let productImageVC = storyboard.instantiateViewController(withIdentifier: StoryBoard.productImageVC)
                controllers.append(productImageVC)
            }
        }

        self.pageViewControllerDelegate?.setupPageController(numberOfPages: controllers.count)

        return controllers
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

//        if #available(iOS 11.0, *) {
//            contentInsetAdjustmentBehavior = .never
//        } else {
//            automaticallyAdjustsScrollViewInsets = false
//        }
        automaticallyAdjustsScrollViewInsets = false
        dataSource = self
        delegate = self

        self.turnToPage(index: 0)


    }


    func turnToPage(index: Int)
    {
        let controller = controllers[index]
        var direction = UIPageViewControllerNavigationDirection.forward

        if let currentVC = viewControllers?.first
        {
            guard let currentIndex = controllers.index(of: currentVC) else {return}
            if currentIndex > index
            {
                direction = .reverse
            }
        }

        self.configuewDisplaying(viewController: controller)

        setViewControllers([controller], direction: direction, animated: true, completion: nil)

    }

    func configuewDisplaying(viewController: UIViewController)
    {
        for (index, vc) in controllers.enumerated()
        {
            if viewController === vc {
                if let productImageVC = viewController as? ProductImageVC
                {
                    productImageVC.imageLink = self.product.imageLinks?[index]

                    self.pageViewControllerDelegate?.turnPageController(to: index)
                }
            }
        }
    }


}

extension ProductImagesPageVC: UIPageViewControllerDataSource
{
    func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {

        if let index = controllers.index(of: viewController)
        {
            if index < controllers.count - 1
            {
                return controllers[index + 1]
            }
        }


        return controllers.first
    }

    func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {

        if let index = controllers.index(of: viewController)
        {
            if index > 0
            {
                return controllers[index - 1]
            }
        }

        return controllers.last
    }
}

extension ProductImagesPageVC: UIPageViewControllerDelegate
{

    func pageViewController(_ pageViewController: UIPageViewController, willTransitionTo pendingViewControllers: [UIViewController]) {

        self.configuewDisplaying(viewController: pendingViewControllers.first as! ProductImageVC)
    }

    func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {

        if !completed
        {
            self.configuewDisplaying(viewController: previousViewControllers.first as! ProductImageVC)
        }
    }



}
/----第页VC代码------
导入UIKit
进口火基
协议ProductImagesPageVCDelegate:类
{
func setupPageController(页数:Int)
func turnPageController(要索引:Int)
}
类ProductImagesPageVC:UIPageViewController{
var产品:产品!
弱变量pageViewControllerDelegate:ProductImagesPageVCDelegate?
结构故事板{
静态let productImageVC=“productImageVC”
}
惰性var控制器:[UIViewController]={
let storyboard=UIStoryboard(名称:“Main”,捆绑包:nil)
变量控制器=[UIViewController]()
如果让imageLinks=self.product.imageLinks
{
对于imageLink中的imageLink
{
让productImageVC=storyboard.InstanceEviewController(标识符为:storyboard.productImageVC)
controllers.append(productImageVC)
}
}
self.pageViewControllerDelegate?.setupPageController(页数:controllers.count)
返回控制器
}()
重写func viewDidLoad(){
super.viewDidLoad()
//如果可用(iOS 11.0,*){
//contentInsetAdjustmentBehavior=.never
//}其他{
//automaticallyAdjustsScrollViewInsets=false
//        }
automaticallyAdjustsScrollViewInsets=false
数据源=self
代表=自我
自转角页(索引:0)
}
func turnToPage(索引:Int)
{
让控制器=控制器[索引]
var方向=UIPageViewControllerNavigationDirection.forward
如果让currentVC=viewControllers?,首先
{
guard let currentIndex=controllers.index(of:currentVC)else{return}
如果currentIndex>index
{
方向=。反向
}
}
自配置显示(视图控制器:控制器)
SetViewController([controller],方向:方向,动画:true,完成:nil)
}
func配置显示(视图控制器:UIViewController)
{
对于控制器中的(索引,vc)。枚举()的
{
如果viewController==vc{
如果让productImageVC=viewController为?productImageVC
{
productImageVC.imageLink=self.product.imageLinks?[索引]
self.pageViewControllerDelegate?.turnPageController(到:索引)
}
}
}
}
}
扩展产品ImageSpageVC:UIPageViewControllerDataSource
{
func pageViewController(pageViewController:UIPageViewController,viewController后的viewController:UIViewController)->UIViewController{
如果let index=controllers.index(of:viewController)
{
如果索引UIViewController{
如果let index=controllers.index(of:viewController)
{
如果索引>0
{
返回控制器[索引-1]
}
}
返回控制器。最后一个
}
}
扩展产品ImageSpageVC:UIPageViewControllerDelegate
{
func pageViewController(pageViewController:UIPageViewController,将转换为PendingViewController:[UIViewController]){
self.configuewDisplaying(viewController:pendingViewControllers.first as!ProductImageVC)
}
func pageViewController(pageViewController:UIPageViewController,didFinishAnimating finished:Bool,PreviousViewController:[UIViewController],transitionCompleted completed:Bool){
如果!完成
{
self.configuewDisplaying(viewController:previousViewControllers.first as!ProductImageVC)
}
}
}
试试这个-

让ViewController:[UIViewController]=[UIViewController()]

如果让pageViewController=parentViewController为?UIPageViewController{ pageViewController.SetViewController(ViewController,方向:。前进,动画:true,完成:nil)}


我试过了,一切都不起作用。因为它们被称为目标c或旧swift版本