我有一个容器视图,里面有一个嵌入式页面控制器。
当页面控制器索引达到某个索引时,我想更改容器视图大小。问题是我无法在页面控制器类中创建容器视图的出口,并且不确定如何从另一个类中获取索引中的更改。
我在思考类似于:来自页面控制器类
func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
if (completed && finished) {
if let currentVC = pageViewController.viewControllers?.last {
let index = vcArr.index(of: currentVC)
globalPageIndex = index!
}
}
}
其中globalPageIndex在顶层声明。
然后在包含对容器视图的引用的类中:
if globalPageIndex == 10 {
containerView?.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.5, 1.5)
}
但是如何让这个类中的函数连续测试索引值?如果我在容器视图类中创建一个类func并在每次从页面控制器更改索引时运行它,那么我就无法访问容器视图。
------- ------ EDIT
class pageViewController: UIPageViewController, UIPageViewControllerDelegate, UIPageViewControllerDataSource, UIGestureRecognizerDelegate, ContainerViewDelegate {
internal func getIndex(index: Int) {
globalIndex = index
}
func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
if (completed && finished) {
if let currentVC = pageViewController.viewControllers?.last {
let index = vcArr.index(of: currentVC)
getIndex(index: index!)
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
LandingPageViewController.delegate = self
并在登陆页面
protocol ContainerViewDelegate {
func getIndex(index: Int)
}
class LandingPageViewController: UIViewController {
static var delegate : ContainerViewDelegate!
答案 0 :(得分:0)
在pageViewController中,在委托方法中,您可以向容器视图控制器发送消息。这样,每次页面视图控制器传输时,容器视图控制器都会收到一条消息。 在此消息中,您可以传递索引。
或者您可以将容器视图控制器设置为pageviewcontroller的委托