【发布时间】:2019-11-10 07:07:53
【问题描述】:
我有一个 UIPageViewController,它包含一个 ContentUIViewController 数组,其中包含滚动视图。
当滚动视图滚动时,我想在 UIPageViewController 的父级视图控制器中识别这一点(添加为子级)
实现这一目标的最佳途径是什么?目前我尝试将didScroll 委托给ContentUIViewController 的视图模型,然后将其输入UIPageViewController 的父级以调整我想要折叠的标题高度,但它不能很好地工作/非常hacky
有没有办法在不通过视图模型反馈的情况下将子 vc 中的委托输出读取到父 vc?由于 UIPageViewController 的数组性质而不是单个子 VC,这被证明是棘手的。
更新:
private func generateContentControllers() -> [UIViewController] {
var viewControllers: [UIViewController] = []
viewControllers.append(ScrollableContentViewController(contentViews: infoViews))
viewControllers.append(reviewsVC)
viewControllers.append(ScrollableContentViewController(contentViews: helpViews))
}
return viewControllers
}
通过提供
var scrollingViewControllers: [UIViewController] { get }
添加了
if let firstViewController = self.viewModel.scrollingViewControllers.first {
pagingController.setViewControllers([firstViewController], direction: .forward, animated: false)
}
【问题讨论】:
-
你可以为 pageViewController 设置一个闭包并在 didScroll 方法中调用它
-
同时添加相关代码。
-
这只会让如果回调到创建它的视图模型,而不是父 VC,那么在太多地方涉及的代码太多,无法在问题中提供所有内容
-
添加了该方法作为答案。看看你是否能与之相关。
标签: ios swift uiscrollview uipageviewcontroller