我在使用UIPageViewController时遇到了一些问题。在其协调器的某个时刻,对UIViewControllers的引用无效。这会导致除关闭模式视图后的第一个页面之外的所有UIPageViewController页面都丢失。
作为基本SwiftUI教程Interfacing with UIKit的完成,按功能项在轻按时实现的模式视图演示。有github repo。
我发现在modalview取消了pageViewController中的协调器之后,委托在最初创建的UIViewControllers进行几次重新创建时会寻找它们。因此,当我尝试滚动页面时,委托人找不到实际的UIViewControllers
func pageViewController(
_ pageViewController: UIPageViewController,
viewControllerAfter viewController: UIViewController) -> UIViewController?
{
guard let index = __parent.controllers.firstIndex(of: viewController)__ else {
return nil
}
}
如官方文档所述,协调器和UIPageViewController的同步应由UIViewControllerRepresentable负责
/// Updates the presented `UIViewController` (and coordinator) to the latest
/// configuration.
func updateUIViewController(_ uiViewController: Self.UIViewControllerType, context: Self.Context)
我错过了什么吗?还是UIViewControllerRepresentable中的这个bug?如何在UIPageViewController上使用模式视图而不失去滚动页面的能力?
答案 0 :(得分:1)
我有一个类似的问题,我通过致电pageViewController.setViewControllers(_:direction:animated:)
通过makeUIViewController(context:)
函数而不是updateUIViewController(:)
函数,因为前者仅被调用一次。