Horizontalmente, desplace TODAS las filas de UICollectionView juntas

Tengo UITableView . Dentro de UITableViewCell he colocado UICollectionView . Actualmente, todo el desplazamiento de fila individualmente. Lo que necesito es cuando el usuario desplaza cualquier fila de manera horizontal (de izquierda a derecha o de derecha a izquierda) toda la fila debe ser desplazarse en el mismo patrón.

He seguido el enlace a continuación pero no hay éxito

Desplácese Múltiple UICollectionView con una colección de IOS

Desplazar manualmente dos UICollectionViews mostrando el mismo contenido.

Por favor mira mi código

ViewController

 import UIKit class ViewController: UIViewController, UITableViewDataSource { var categories = ["Header 1", "Header 2", "Header 3", "Header 4", "Header 5", "Header 6", "Header 7", "Header 8"] @IBOutlet var myTableView: UITableView! override func viewDidLoad() { super.viewDidLoad() myTableView.dataSource = self } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? { return categories[section] } func numberOfSectionsInTableView(tableView: UITableView) -> Int { return categories.count } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 1 } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { var cell = tableView.dequeueReusableCellWithIdentifier("cell") as? CategoryRow if cell == nil { cell = CategoryRow(style:UITableViewCellStyle.Subtitle, reuseIdentifier:"cell") } else { } cell!.tag = indexPath.section cell?.collection.reloadData() return cell! } } 

MyCollectionViewCell

 import UIKit class MyCollectionViewCell: UICollectionViewCell { @IBOutlet var title: UILabel! @IBOutlet var data: UILabel! } 

CategoryRow

 import UIKit class CategoryRow: UITableViewCell, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, UIScrollViewDelegate { var Title1 = ["1st Title 1", "1st Title 2", "1st Title 3", "1st Title 4", "1st Title 5", "1st Title 6", "1st Title 7", "1st Title 8"] var Data1 = ["1st Data 1", "1st Data 2", "1st Data 3", "1st Data 4", "1st Data 5", "1st Data 6", "1st Data 7", "1st Data 8"] var Title2 = ["2nd Title 1", "2nd Title 2", "2nd Title 3", "2nd Title 4", "2nd Title 5", "2nd Title 6", "2nd Title 7", "2nd Title 8"] var Data2 = ["2nd Data 1", "2nd Data 2", "2nd Data 3", "2nd Data 4", "2nd Data 5", "2nd Data 6", "2nd Data 7", "2nd Data 8"] var Title3 = ["3rd Title 1", "3rd Title 2", "3rd Title 3", "3rd Title 4", "3rd Title 5", "3rd Title 6", "3rd Title 7", "3rd Title 8"] var Data3 = ["3rd Data 1", "3rd Data 2", "3rd Data 3", "3rd Data 4", "3rd Data 5", "3rd Data 6", "3rd Data 7", "3rd Data 8"] var Title4 = ["4th Title 1", "4th Title 2", "4th Title 3", "4th Title 4", "4th Title 5", "4th Title 6", "4th Title 7", "4th Title 8"] var Data4 = ["4th Data 1", "4th Data 2", "4th Data 3", "4th Data 4", "4th Data 5", "4th Data 6", "4th Data 7", "4th Data 8"] var Title5 = ["5th Title 1", "5th Title 2", "5th Title 3", "5th Title 4", "5th Title 5", "5th Title 6", "5th Title 7", "5th Title 8"] var Data5 = ["5th Data 1", "5th Data 2", "5th Data 3", "5th Data 4", "5th Data 5", "5th Data 6", "5th Data 7", "5th Data 8"] var Title6 = ["6th Title 1", "6th Title 2", "6th Title 3", "6th Title 4", "6th Title 5", "6th Title 6", "6th Title 7", "6th Title 8"] var Data6 = ["6th Data 1", "6th Data 2", "6th Data 3", "6th Data 4", "6th Data 5", "6th Data 6", "6th Data 7", "6th Data 8"] var Title7 = ["7th Title 1", "7th Title 2", "7th Title 3", "7th Title 4", "7th Title 5", "7th Title 6", "7th Title 7", "7th Title 8"] var Data7 = ["7th Data 1", "7th Data 2", "7th Data 3", "7th Data 4", "7th Data 5", "7th Data 6", "7th Data 7", "7th Data 8"] var Title8 = ["8th Title 1", "8th Title 2", "8th Title 3", "8th Title 4", "8th Title 5", "8th Title 6", "8th Title 7", "8th Title 8"] var Data8 = ["8th Data 1", "8th Data 2", "8th Data 3", "8th Data 4", "8th Data 5", "8th Data 6", "8th Data 7", "8th Data 8"] @IBOutlet var collection: UICollectionView! override func awakeFromNib() { super.awakeFromNib() } override init(style: UITableViewCellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) } requinetworking init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } func scrollViewDidScroll(scrollView: UIScrollView) { // Some logic here } override func setSelected(selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) } func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return 8 } func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCellWithReuseIdentifier("videoCell", forIndexPath: indexPath) as! MyCollectionViewCell switch (self.tag) { case 0: cell.title.text = self.Title1[indexPath.row] cell.data.text = self.Data1[indexPath.row] break case 1: cell.title.text = self.Title2[indexPath.row] cell.data.text = self.Data2[indexPath.row] break case 2: cell.title.text = self.Title3[indexPath.row] cell.data.text = self.Data3[indexPath.row] break case 3: cell.title.text = self.Title4[indexPath.row] cell.data.text = self.Data4[indexPath.row] break case 4: cell.title.text = self.Title5[indexPath.row] cell.data.text = self.Data5[indexPath.row] break case 5: cell.title.text = self.Title6[indexPath.row] cell.data.text = self.Data6[indexPath.row] break case 6: cell.title.text = self.Title7[indexPath.row] cell.data.text = self.Data7[indexPath.row] break case 7: cell.title.text = self.Title8[indexPath.row] cell.data.text = self.Data8[indexPath.row] break default: break } return cell } } 

Editar – 1

Enlace para proyecto puede ser útil para comprender el escenario

https://drive.google.com/file/d/0B0drBRiVjY71Tl9vUER6Zk44VFk/view?usp=sharing

Edit – 2 He tratado de implementar el siguiente enlace pero no puedo hacerlo

Desplazamiento horizontal sincronizado de vistas de colección en filas de vista de tabla

Gracias por adelantado

Di que tienes 2 vistas de colección. Lo que puedes hacer es algo como esto.

 // say cv0 and cv1 are outlets to two table views func scrollViewDidScroll(scrollView: UIScrollView) { if scrollView == self.cv0 { self.cv1.contentOffset = self.cv0.contentOffset } else { if scrollView == self.tv1 { self.cv0.contentOffset = self.cv1.contentOffset } } } 

Si lo desea para más vistas de recostackción, puede escribir un método genérico para manejarlo. Puede pasar scrollView a este método y todas las demás vistas de desplazamiento en la stack contentOffSet se configuran en consecuencia.

Gracias a @Impossible por problema de ayuda resuelto ahora.

Primero, se configuró la cell?.collection.tag label cell?.collection.tag en cellForRowAtIndexPath de UITableView como

 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { var cell = tableView.dequeueReusableCellWithIdentifier("cell") as? CategoryRow if cell == nil { cell = CategoryRow(style:UITableViewCellStyle.Subtitle, reuseIdentifier:"cell") } else { } cell!.tag = indexPath.section cell?.collection.tag = (100 * indexPath.section) + 1 cell?.collection.reloadData() cell?.collection.delegate = self return cell! } 

Luego obtengo una vista utilizando el método de label viewWithTag dentro de scrollViewDidScroll como

 func scrollViewDidScroll(scrollView: UIScrollView) { for var i = 0 ; i < 8 ; i++ { let cell2 = self.view .viewWithTag((100 * i) + 1) as? UICollectionView if cell2 != nil { cell2!.contentOffset = scrollView.contentOffset } } }