Tableviewを作る〜Swiftで楽天レシピAPIを表示させてみた②〜

##やること
Tableviewを作る

##Tableviewを作る
①Tableviewを作るコードを記入

```

    let tableView: UITableView = {
        let tv = UITableView()
        return tv
    }()
```

②``override func viewDidLoad``の中にtableviewを表示させるコードを記入

```
view.addSubview(tableView)
```
③tableviewのサイズを指定

```
tableView.frame.size = view.frame.size
```

##シミュレーター
<img width="325" alt="スクリーンショット 2020-07-28 20.52.14.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/627010/0974d001-fb47-0755-bf38-cc6b1f705393.png">

##tableviewのデリゲートのメソットの設定
①``override func viewDidLoad``の中にデリゲートのメソットを使えるようにするコードを記入

```
tableView.delegate = self
tableView.dataSource = self
```
これでデリゲートのメソットが使えるようになりました。

②classの一番上のところに`private let cellId = "cellId"`と記入

③一番下にデリゲート使うにあたって必ず必要なメソッドを記入

```
extension ViewController: UITableViewDelegate,UITableViewDataSource{
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 10  　//とりあえず１０にしておきました。
            }
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let  cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath)
    cell.backgroundColor = .blue   //確認のため

    return cell
}
}
```
④``override func viewDidLoad``の中にTableViewに上記のメソッドを反映させるコードを記入

```
tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellId)
```

##タイトルをつける
①Main.storyboardに移動してViewControllerを選択し、``Editor``→``Embedld``→``NavigationController``を選択してNavigationControllerを設置する。
<img width="730" alt="スクリーンショット 2020-07-28 21.42.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/627010/ef20c3dc-fde0-43ef-c405-8ab5b0f7037b.png">


②ViewController.swiftに戻って``override func viewDidLoad``の中にタイトルを表示させるコードを入力する

```
navigationItem.title = "おすすめレシピ"
```
##シミュレーター
<img width="318" alt="スクリーンショット 2020-07-28 21.54.43.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/627010/6a3467bf-be94-f090-491e-b7462552830e.png">

無事反映させることができました！
次はこの前のAPIを実際表示させてみたいと思います。

初心者なので上記のコードがベストなのかはわからないのですが勉強の記録として書かせていただきます。
より良い方法があればご教授いただけると嬉しいです。



<a href="https://qiita.com/aa2302/items/76d4d1c21bd4ec217d8d">前回の記事API取得</a>
<a href="https://qiita.com/aa2302/items/dbaa9377133e83cbff81">次の記事</a>

##今のところ全体のコード
```
struct ResultList: Codable {
    
    let result: [User]
 
struct User: Codable {
    let foodImageUrl :String
    let recipeTitle  :String
}
}

class ViewController: UIViewController {
    
    private let cellId = "cellId"

    //tableviewを作っていく
    let tableView: UITableView = {
        let tv = UITableView()
        return tv
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        
        view.addSubview(tableView)
        tableView.frame.size = view.frame.size
        
        tableView.delegate = self
        tableView.dataSource = self
        tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellId)
        navigationItem.title = "おすすめレシピ"
        
      getRApi()
    }
    
     private func getRApi(){
            guard let url = URL(string: "楽天API") else {return}
            
            let task = URLSession.shared.dataTask(with: url) { (data, response, err)in
                if let err = err {
                    print("情報の取得に失敗しました。:", err)
                    return
                }
                if let data = data{
                    do{
                        let resultList = try JSONDecoder().decode(ResultList.self, from: data)
                        print("json: ", resultList)
                    }catch(let err){
                         print("情報の取得に失敗しました。:", err)
                        
                    }
                }
            }
            task.resume()
        }
    }
extension ViewController: UITableViewDelegate,UITableViewDataSource{
    

        func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

            
            return 10
            }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath)
        cell.backgroundColor = .blue   //確認のため
        
        return cell
    }

}
```