Ios 如何在swift中重置/重新加载UI页面控制器视图
我正在寻找如何重新加载UI页面控制器。 在表VC上,我添加了UIHeaderView并嵌入了UIPage VC。 页面VC正在从firebase动态加载图像。 第一次加载正确的图像集时,在表VC上选择其他cel时,页面VC需要刷新其数据。 如何实现此功能 这是我为第VC页写的女生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
//-----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版本