如何在UITableViewCell中实现UIPageViewController

时间:2017-01-18 13:19:04

标签: ios swift

我想在'UITableViewCell'中制作幻灯片。所以,我需要使用'UIPageViewController'来制作幻灯片。我试图在这里实现一个解决方案link here,但我无法将UIPageViewController添加到UITableViewCell内容视图。

这是我在UITableViewCell中的代码

let slideshowPageViewController = SlideshowPageViewController()
self.addSubview(slideshowPageViewController)
  

错误:无法将'UIPageViewController'类型的值转换为   预期参数类型'UIView'

有人可以建议另一种解决方案吗?

2 个答案:

答案 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)

希望这可以帮助那些遇到同样问题的人。