0
나는 스토리 보드에서 만든 5 개의 뷰 컨트롤러를 포함하는 UIPageViewController를 설정했습니다. 페이지는 스 와이프 제스처로 잘 변경되지만, 사용자가보기 컨트롤러 중 하나의 단추를 누른 후에 페이지가 변경되기를 원합니다. 내보기 컨트롤러 중 하나에 IBAction를에 여기 nextPageWithIndex
메소드를 호출UIPageViewController에서 페이지가 변경되지 않는 이유는 무엇입니까?
// PageVC.swift
import Foundation
import UIKit
class PageVC: UIPageViewController, UIPageViewControllerDataSource, UIPageViewControllerDelegate {
lazy var VCArr: [UIViewController] = {
return [self.VCInstance(name: "OB1"),
self.VCInstance(name: "OB2"),
self.VCInstance(name: "OB3"),
self.VCInstance(name: "OB4"),
self.VCInstance(name: "OB5"),
self.VCInstance(name: "OB6")]
}()
private func VCInstance(name: String) -> UIViewController {
return UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: name)
}
override public func viewDidLoad() {
super.viewDidLoad()
self.dataSource = self
self.delegate = self
if let OB1 = VCArr.first {
setViewControllers([OB1], direction: .forward, animated: true, completion: nil)
}
}
public func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController?{
guard let viewControllerIndex = VCArr.index(of: viewController) else {
return nil
}
let previousIndex = viewControllerIndex - 1
guard previousIndex >= 0 else {
return VCArr.last
}
guard VCArr.count > previousIndex else {
return nil
}
return VCArr[previousIndex]
}
public func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController?{
guard let viewControllerIndex = VCArr.index(of: viewController) else {
return nil
}
let nextIndex = viewControllerIndex + 1
guard nextIndex < VCArr.count else {
return VCArr.first
}
guard VCArr.count > nextIndex else {
return nil
}
return VCArr[nextIndex]
}
public func presentationCount(for pageViewController: UIPageViewController) -> Int{
return VCArr.count
}
public func presentationIndex(for pageViewController: UIPageViewController) -> Int{
guard let OB1 = viewControllers?.first,
let OB1Index = VCArr.index(of: OB1) else {
return 0
}
return OB1Index
}
public func nextPageWithIndex(index: Int)
{
let nextVC = VCArr[index]
setViewControllers([nextVC], direction: .forward, animated: true, completion: nil)
}
}
: 여기 내 코드의 내가 그것에서 인쇄 할 수 있어요로서,
// OB1.swift
import UIKit
class OB1: UIViewController {
@IBOutlet var getStartedColorChange: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func getStartedBtn(_ sender: Any) {
let getStarted = PageVC()
getStarted.nextPageWithIndex(index: 2)
}
}
버튼 작동하지만, 페이지 변화하지 않습니다. 버튼을 사용하여 페이지를 변경하려면 무엇을 변경해야합니까?