18236


TableViewの下にCollectionViewを配置し、

**< やりたいこと>**

**1 TableViewをスクロールさせるとCollectionViewがスクロール**  
(tableViewのセクションindexをとって、collectionViewではそのindexのitemに移動。例えば、tableView
section indexが3であれば、collectionViewのセクション1のitem index3に移動)

**2 CollectionViewをスクロールするとTableViewがスクロール**

という動作をさせたく、下記のようなコードを書きました。

**< 問題>**

2はうまく動いたのですが、1がうまく動きません。

7行目でブレイクポイントを張ったところ、collectionViewIndexPathはうまく取得できているのですが、collectionViewCellが微動だにしません。

どのようにしたら、うまく動くようになるでしょうか。アドバイスいただけたら幸いです。

**スクリーンショット**

[![画像の説明をここに入力](https://i.stack.imgur.com/pFZoy.png)](https://i.stack.imgur.com/pFZoy.png)

**コード**

[code]

    func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
    
        if scrollView == tableView{
            let sectionIndex =  self.tableView.indexPathsForVisibleRows![0].section
            if self.collectionView.numberOfItemsInSection(1) >= sectionIndex {
                let collectionViewIndexPath = NSIndexPath(forRow: sectionIndex, inSection: 1)
                self.collectionView.scrollToItemAtIndexPath(collectionViewIndexPath, atScrollPosition: .Top, animated: true)
            }
        }
    
        if scrollView == collectionView {
            let itemIndex = collectionView.indexPathsForVisibleItems()[1].item //{
            if self.tableView.numberOfSections > itemIndex {
                let tableViewIndexPath = NSIndexPath(forRow: 0, inSection: itemIndex)
                self.tableView.scrollToRowAtIndexPath(tableViewIndexPath, atScrollPosition: .Top, animated: true)
            }
        }
    }
    
[/code]

**Viewの構造**

[![画像の説明をここに入力](https://i.stack.imgur.com/owmAD.png)](https://i.stack.imgur.com/owmAD.png)

**環境**

Xcode 7.1 / BaseSDK iOS9.1 / Swift 2.1  
Deployment Target iOS8.2  
MacOS X 10.11.1(El Capitan)


CC BY-SA 3.0
2015-10-29T18:02:38.840
18219
2015-10-30T03:25:23.897
2015-10-30T02:39:44.260
682
682
question
ios swift uitableview uicollectionview uiscrollview
TableViewのスクロールに合わせてCollectionViewをスクロールさせたい


他の場所でアドバイスをいただき、解決しました。

このプログラムでは、collectionViewを水平方向に動かしたいので、atScrollPosition: .Topではダメで、.Right .Left
.CenteredHorizontally などにしないといけないようでした。

私の場合は、該当セルを真ん中に置きたいので、.CenteredHorizontally にしたらうまく動きました。


CC BY-SA 3.0
2015-10-30T03:25:23.897
18236
2015-10-30T03:25:23.897
682
18219
answer