我想在'UITableViewCell'中制作幻灯片。所以,我需要使用'UIPageViewController'来制作幻灯片。我试图在这里实现一个解决方案link here,但我无法将UIPageViewController添加到UITableViewCell内容视图。
这是我在UITableViewCell中的代码
let slideshowPageViewController = SlideshowPageViewController()
self.addSubview(slideshowPageViewController)
错误:无法将'UIPageViewController'类型的值转换为 预期参数类型'UIView'
有人可以建议另一种解决方案吗?
答案 0 :(得分:2)
我不推荐这个。 UIPageViewController,是一个UIViewController。我总是发现它太复杂了,不适合任何实际使用 - 特别是如果你只需要循环播放图像进行幻灯片放映。
我建议将子UIScrollView添加到UITableViewCell并自己处理幻灯片代码。
Here is a code sample在设置UIScrollView时有一些好的做法。最重要的部分是在scrollViewDidScroll委托调用中计算当前索引:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
// Calculate current index
let index = Int(round(scrollView.contentOffset.x/scrollView.frame.size.width))
updateCurrentIndex(index: index)
}
如果您需要滚动用户的幻灯片,请不要直接调用updateCurrentIndex。相反,调用setContentOffset,代理仍将触发,你的updateCurrentIndex方法将起作用,就像用户手动滚动一样。
@IBAction func didNext() {
if (currentIndex < scrollView.subviews.count-1) {
let point = CGPoint(x: scrollView.bounds.size.width * CGFloat(currentIndex + 1), y: 0)
scrollView.setContentOffset(point, animated: true)
} else {
performSegue(withIdentifier: "showTermsSegue", sender: self)
}
}
答案 1 :(得分:0)
我努力寻找解决方案。而且,我已经找到了。
在rowAtIndexPath中,我添加了childViewController,它对我有用。
let slideshowPageViewController = SlideshowPageViewController()
self.addChildViewController(slideshowPageViewController)
cell = tableView.dequeueReusableCell(withIdentifier: "Slideshow", for: indexPath)
cell.contentView.addSubview(slideshowPageViewController.view)
希望这可以帮助那些遇到同样问题的人。