refreshを実装するもう少し細かい部分を良くするなにもないセルをなくしたいタップした後が残るのを消して欲しいUITableViewの使い方は奥が深い初心者向けにiOSのUITableViewの基本的な使い方について説明します。この記事を一通り読むことでほとんどの部分を極めれることを目標にしています。UIButtonを使って簡単な画面を作れるようになりましたか?しかし、UITableViewを使おうと思ったら、途端に扱うクラスが増えてそれぞれの関係性がなんなのかついていけず、躓いている人が多いのではないでしょうか?最初の躓きとなりやすいUITableViewを1つ1つ役割を理解し、それぞれの関係性を頭でイメージできるようになれば、難しいものではなくなります。テーブルを表示してタップでアラートを出すサンプルを作成する完成イメージは次の動画のように、テーブルが表示されタップしたらタップしたデータをアラートで表示します。このサンプルにはUITableViewUITableViewDelegateUITableViewDataSourceUITableViewCellUIAlertControllerUIAlertActionが使われています。全機能を使っているのではなく、部分的に使っているだけなので気構えずに1つずつ読み解いていきましょう。UITableViewをViewControllerと紐付けるまず次の動画のようにstoryboard上のUITableViewをコードとバインディングします。※動画が再生出来ない場合はキャッシュ無視リロードしてみてください。chromeであればcmd+rでできます。この時点で一度実行します。実行するとテーブルのセパレータ(区切り線)が表示されるだけですが、実行はできます。実行できずエラーになる場合は、UITableViewの紐付けが次の画像のようになっているか確認してみてください。コードは次の通りです。先程の状態ではテーブルには何も表示されていません。次の画像のようにデータを表示したいですね。テーブルに何らかのデータを表示するには、UITableViewDataSourceを使います。UITableViewDataSourceとはUITableViewDataSourceとはUITableViewのデータモデルを表現するプロトコルです。このプロトコルを使えばテーブルにデータを表示することができます。}データを表示するコードを書く次のコードはテーブルにABCD1234を上から順番に表示するコードです。}}順番に説明します。"4"]itemsがデータとなります。この並び順がテーブルの表示順となります。selftableView.dataSourceとはUITableViewが持つプロパティで型はUITableViewDataSourceです。UITableViewDataSource?と書いてるのを確認できます。「UITableViewDataSourceとはUITableViewのデータモデルを表現するプロトコル」です。このプロトコルに対し、selfを代入しています。selfとはViewControllerです。ViewControllerがUITableViewDataSourceを採用してることになります。...}このコード部分がそれにあたります。UITableViewDataSourceが提供する実装が必要なメソッドの1つです。指定セクション内のロウの数を返すメソッドです。今回はitemsの中身を表示するので、itemsの要素数を返します。sectionは今回は使いませんが、詳しくはこちらの記事をどうぞ。【初心者向け】UITableViewのSection(セクション)の使い方あまり使う機会の少ないと油断してると、必要性が急上昇するSection(セクション)です。Section(セクション)を使うとどうなるのか?どういった見た目になるのか?注意点や使い所に関して説明します。テーブルはヘッダー、フッター、SectionとRowに分かれています。Sectionごとにもヘッダーとフッターがあります。1...セクションとは?ロウとは?次の図のような関係になってます。ロウ(Row)とはセルを表します。セクションとはロウをまとめたグループ。IndexPath)にどんなセルを返すのかを定義します。"cell")セルIDcellがあればそれを使いまわします。なければUITableViewCellをスタイルdefaultでID名をcellで用意します。"cell"はセルを使い回すための識別子を名付けます。これは複数種類のセルを扱う場合、ユニークである必要があります。.defaultとはUITableViewCellに予め何パターンか用意されているのでそれの指定になります。詳しくはこちらの記事で書いてあります。【初心者向け】UITableViewCellのスタイル一覧UITableViewCellには予めデフォルトで用意されたスタイルが存在します。この記事ではそのスタイル一覧を紹介します。カスタマイズして車輪の再発明を避けることが出来ます。原則3UIで構成されており、UITableViewCel...セルはカスタマイズできる既存スタイルにはなく自分でセルを自作(カスタマイズ)することもできます。詳しくはこちらの記事をどうぞ。簡単なユーザー情報を表示するテーブルを題材に話を進めます。ofにUITableViewCellを選んで作成すると、次のようなコードが生成されます。...セルは使い回すUITableViewCellはIDによる種類別で用意しておき、セルを再利用することでメモリ効率を満たしています。詳しくはこちらの記事をどうぞ。【初心者向け】UITableViewCellの再利用を理解するUITableViewCellは再利用セルとして使われていますが、どういった感じで再利用されているかイメージついてる初心者は少ないかと思います。イメージがついて再利用の利点が分かることで、より一層理解が深まると思います。UITableViewCell...UITableViewのUI特性はたくさんのデータを縦に積むことで、スクロールすればそれらを閲覧できます。そのため例えばテーブルに1000個のデータを並べた場合、UITableViewCellは1000個必要になります。それだと、メモリ効率が非常に悪いため、同じレイアウトなら使いまわそう。それがReusableCellと名付けられた由来になります。UITableViewDelegateとはUITableViewのイベントハンドラデータを表示することができました。アプリとしては表示だけで済むケースはほぼなく、大抵はセルをタップしたら何かしらアクションを起きます。次のように押されたセルに関連するアクションを出すなど。セルのタップを検知するには、UITableViewDelegateを使います。UITableViewDelegateとはUITableViewDelegateとはUITableViewの操作イベントをハンドリングするプロトコルです。今回はタップのみですが、それ以外にも様々なイベントを検知することができます。詳しくはこちらにまとめてあります。【初心者向け】UITableViewDelegateで出来ること`UITableViewDelegate`とは`UITableView`の操作イベントをハンドリングするプロトコルです。今回はタップのみですが、それ以外にも様々なイベントフックや制御ができます。このprotocolを使ってどのようなことが出来るのか?についてとっかかりを掴むページを想定してます。実際の詳細に関しては記事内の随所に詳細ページへの紹介をしているので...セルをタップしたらアラート出すコードを書く次のコードはセルをタップすると選択したデータをアラートに表示するコードです。}}前述したデータ表示のコードに加えてあります。selfと同様になります。delegateはUITableViewDelegateというプロトコルになります。}}このメソッドはセルがタップされたら呼ばれるメソッドです。UITableViewDelegateプロトコルによって定義されています。nil)データアクセス方法をセル表示と同様に行うことで、タップした場所に表示されたデータ取得を実現しています。アラートに関してはこちらにまとめてあります。【初心者向け】UIAlertControllerでアラートを表示する方法iOSでは紆余曲折あった後に、Alert(アラート)とActionSheet(アクションシート)を一つのクラスに集約されました。UIViewベースだったものがUIViewControllerに変わったことで表示挙動も変わりました。難しくなってはおらず、通常の利用ケースであれば簡単に使うことが出来ます。ユーザー行動かそうじゃないかになります。refreshを実装するUIRefreshControlを使って、テーブル最上部で下にスワイプしてリフレッシュを呼ぶ方法についてはこちらの記事で紹介しています。Refresh)の実装についてまとめました。1クラスにねじ込んだので、データフロー周りは参考にしないでください。使うことで簡単に実装できます。下記サンプルコードになり...もう少し細かい部分を良くする基本的な部分は前述した説明とコードになります。ついでにデザイナーから要望を受けやすい一部とその実装を簡単に説明します。セルに見えている原因となるセパレート(区切り線)を消すことで解決します。UIView()}このようにフッタービューに対して空のUIViewを代入することで空セルの区切り線は表示されなくなります。区切り線あり区切り線なしタップした後が残るのを消して欲しい特に何もしないとタップしてアラートが終わった後もタップした後が残ります。deselectRowメソッドを呼ぶことで選択解除されます。UITableViewの使い方は奥が深いUITableViewはiOSを習い始めでは慣れないクラス構造でつまづきやすいポイントかと思います。アプリのレイアウトにおいてほぼ100%使われるので、極めておいて損はないです。めげずにどんどんUITableViewの使い方を覚えていったほうが体系的に理解できます。mothuleこのページはmothuleの技術ブログになります。当サイトに記載された情報により損害が発生しましても、責任は致しかねません。