2017-01-18 4 views
0

'UITableViewCell'内でスライドショーを作成したいと思います。だから、私は 'UIPageViewController'を使ってスライドショーを作る必要があります。私はここで解決策を実装しようとしましたlink here UITableViewCellコンテンツビューにUIPageViewControllerを追加することはできません。UITableViewCell内でUIPageViewControllerを実装する方法

これは、UITableViewCellの

で私のコード
let slideshowPageViewController = SlideshowPageViewController() 
self.addSubview(slideshowPageViewController) 

エラーです: 予想引数の型に型 'UIPageViewController' の値を変換できません 'のUIView'

誰もが別の解決策をアドバイスすることはできますか?

答えて

1

私はこれをお勧めしません。 UIPageViewControllerは、UIViewControllerです。私はいつも、実世界での使用にはそれほど複雑すぎると感じました。特に、スライドショー用の画像を循環させるだけでよいのです。

UITableViewCellに子のUIScrollViewを追加し、スライドショーコードを自分で処理することをお勧めします。

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) 
    } 
} 
+0

私はあなたの解決が気に入っていますが、問題はサイクリングのイメージを作りたいということです。無限ループでUIScrollViewを実装できますか? – Untilfinished

+0

ページ1に戻ってやり直すか、新しいページ(左から右)に移動しているように見えますか?ユーザーとのやりとりを許可するか(ユーザーがイメージを循環できるようにする)、イメージを自動的に循環させますか?いずれにしても、私はUIPageViewControllerがボックスから無限ループすることはできないと思います。 –

+0

イメージを自動的に循環させたいと思っています。また、スライドショーイメージを変更するためにスワイプすることもできます。 (カルーセルのような) – Untilfinished

0

私は解決策を見つけるのが難しいです。そして、私はすでにそれを見つけました。

rowAtIndexPathでは、私はchildViewControllerを追加して、私のために働きます。

let slideshowPageViewController = SlideshowPageViewController() 
self.addChildViewController(slideshowPageViewController) 
cell = tableView.dequeueReusableCell(withIdentifier: "Slideshow", for: indexPath) 

cell.contentView.addSubview(slideshowPageViewController.view) 

これは、同じ問題を抱えている人に役立ちます。

関連する問題