contenthello-world.jp.netwebエンジニアのメモ。投稿Tweet前回はレイアウト調整やディレクトリ構造の整理を行いました。今回はUITableViewのセクション分けの対応をしたいと思います。「週刊Qiita」はその名の通り、週間更新なので、週ごとにセクション分けをしてセルの表示を行いたいです。メソッドを追加します。本来はAPIの内容を元に動的にセクション数やセクションタイトルを表示するようにしたいのですが、まずは仮の値を入れてビルドしてみます。name」というタイトルで、各セクション2個ずつのセルを表示できました。playgroundで試しながらデータ構造を考える仮実装ができたので、動的にセクション情報を変更できるようにしていきます。現状は以下のようにAPIから取得したリンク情報をlinks変数にすべて格納しています。[Link]()・・・self.links.append(Link(省略))このデータ構造だと、セクション毎にリンクが何件あるかが分からないので、データ構造を見直します。以下のようにplaygroundでどういうデータ構造にしようか色々試していました。0linkList[sectionIdx]sections[sectionIdx]ちょっとした確認をしたいときにはplaygroundを使うと手軽で良いですね。sections変数に週ごとの日付情報を配列で保持するようにして、linkList変数にはセクション毎のLinkモデルの配列を保持することにしました。一つの変数でなんとかしようともしたのですが途中で挫折して、上記のやり方にしました。APIの内容を元に動的にセクション数、セクションタイトルを切り替えるデータ構造が決まったので、ViewControllerを新しいデータ構造に切り替えていきます。[String]()続いてAPIからデータを取得するsetupLinksメソッドを変更します。for文で各セクション毎のリンク情報をlinks配列に保持し、セクション毎にsections配列、linkList配列を更新します。}セクション数を返すnumberOfSectionsInTableViewメソッドも更新します。}セクションタイトルを返すtableViewメソッドはsectionのindexを元にセクション名を取得するようにします。}セクションに含まれるセルの数を返すtableViewメソッドも、セクション毎のlinkListのcountをするように変更します。}セルの内容を設定しているtableViewメソッドでは、indexPath.sectionで現在のsectionがわかるので、indexPath.sectionを使って現在のセル情報を設定するように修正します。}これでセクション分けの設定ができました。最終的なViewController.swiftは以下のようになります。}}この状態で再ビルドを行うとセクション分けが正しく行われるようになります。これでトップ画面の表示がひと通りできてきました。次回はリンクをクリックした場合の対応ということで、WebView周りの実装を行います。夏の起きられない対策に。Amazonアソシエイト・プログラムの参加者です。