TableViewのCellに横スクロールのCollectionViewを表示

#今回の内容
<img width="150" alt="B30B0A23-6525-4C1B-B7D2-8689ADA924E5_1_201_a.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1466343/d3425050-0a05-f524-c8b6-4ae74c6fb5c5.jpeg">

#コードと簡単解説
##TableViewCell
* TableViewのCustomCellを作成します。
* `TableViewCell.xib`にCollectionViewを作成しています。
* `TableViewCell.xib`の`Identifier`にTableViewCellを入力しておきます。
* `collectionView.register(CollectionViewCell.nib(), forCellWithReuseIdentifier: CollectionViewCell.identifire)
`でCellを登録します。

```Swift:TableViewCell
import UIKit

class TableViewCell: UITableViewCell {

    @IBOutlet weak var collectionView: UICollectionView!
    
    static let identifire = "TableViewCell"
    static let nib = {() -> UINib in return UINib(nibName: "TableViewCell", bundle: nil)}
    static let collectionViewFlowLayout = UICollectionViewFlowLayout()
    
    override func awakeFromNib() {
        super.awakeFromNib()
       
        collectionView.dataSource = self        
        collectionView.register(CollectionViewCell.nib(), forCellWithReuseIdentifier: CollectionViewCell.identifire)
               
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

    }
  
}

extension TableViewCell:UICollectionViewDataSource{
    
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        
        return CollectionViewCell.colorArray.count
        
    }    
    
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: CollectionViewCell.identifire, for: indexPath) as! CollectionViewCell
        
        cell.imageView.tintColor = CollectionViewCell.colorArray[indexPath.row]
        
        return cell
        
    } 
    
}

extension TableViewCell:UICollectionViewDelegateFlowLayout{
    
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        
        return CGSize(width: collectionView.frame.size.height, height: collectionView.frame.size.height)
        
    }
}
```

##CollectionViewCell
* CollectionViewのCustomCellを作成します。
* `CollectionViewCell.xib `にImageViewを作成しています。（画像は`star.fill`を設定しています）
* `CollectionViewCell.xib `の`Identifier`にCollectionViewCellを入力しておきます。


```Swift:
import UIKit

class CollectionViewCell: UICollectionViewCell {

    @IBOutlet weak var imageView: UIImageView!    
    
    static let identifire = "CollectionViewCell"
    static let nib = {() -> UINib in return UINib(nibName: "CollectionViewCell", bundle: nil)}
    static let colorArray = [UIColor.systemGreen,UIColor.systemTeal,UIColor.systemIndigo,UIColor.systemRed,UIColor.systemGray]
    
    override func awakeFromNib() {
        super.awakeFromNib()
                
    }
}
```
##ViewController

* Main.storyboardでTableViewを作成しておきます。
* `tableView.register(TableViewCell.nib(), forCellReuseIdentifier: TableViewCell.identifire)`でCellを登録します。

```Swift:
import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var tableView: UITableView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        tableView.delegate = self
        tableView.dataSource = self
        
        tableView.register(TableViewCell.nib(), forCellReuseIdentifier: TableViewCell.identifire)
        
    }
}

extension ViewController:UITableViewDelegate{
    
    func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
        
        return "Section"
        
    }
    
    func numberOfSections(in tableView: UITableView) -> Int {
        
        return CollectionViewCell.colorArray.count
    }
    
}

extension ViewController:UITableViewDataSource{
    
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        
        return tableView.frame.size.height / 4
        
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
        return 1
        
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        
        let cell = tableView.dequeueReusableCell(withIdentifier: TableViewCell.identifire, for: indexPath) as! TableViewCell
        
        return cell
    }
    
    
}

```


# 終わり
ご指摘、ご質問などありましたら、コメントまでお願い致します。