1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-07-28

##やること
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

##シミュレーター
スクリーンショット 2020-07-28 20.52.14.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   //とりあえず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を選択し、EditorEmbedldNavigationControllerを選択してNavigationControllerを設置する。
スクリーンショット 2020-07-28 21.42.32.png

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

navigationItem.title = "おすすめレシピ"

##シミュレーター
スクリーンショット 2020-07-28 21.54.43.png

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

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

前回の記事API取得
次の記事

##今のところ全体のコード

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
    }

}
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?