35940


カスタムセルを利用したTableViewで表示させたセルに対し、配置したボタンを押下することで、セクション毎に分けられたTableViewを再表示させたいと考えております。

カスタムセルを用いたTbaleViewの表示、ボタンの配置まではできたのですが、その後、どのようにセクション毎に分け、TableViewを再表示させればよいのか分からないため、ご教授願います。

現状の画面イメージとボタン押下後の画面イメージは下記のとおりです。

＜現状の画面（イメージ）＞[![画像の説明をここに入力](https://i.stack.imgur.com/K0zS5.png)](https://i.stack.imgur.com/K0zS5.png)

＜ボタン押下後の画面イメージ＞[![画像の説明をここに入力](https://i.stack.imgur.com/xEbna.png)](https://i.stack.imgur.com/xEbna.png)

カスタムセルの作成方法は下記サイトを参考にほぼそのままの内容で実装いたしました。

・初めてでも分かる！カスタムセルをSwiftで使用する方法  
<http://yuu.1000quu.com/use_a_custom_cell_in_swift>

データ構造は配列で下記のように用意しております。  
・画像データ

[code]

    let image = ["A.jpg", "B.jpg", "C.jpg", "D.jpg"] //ここでは4つの画像ファイルを用意しております。
    
[/code]

・上記画像データに対するタグ

[code]

    let tag = ["A", "B", "A", "A"]　//「A.jpg」のタグは「A」となります。
    
[/code]

・上記画像データに対する日付

[code]

    let date = ["2016/06/25", "2016/06/24", "2016/06/23", "2016/06/22"] //「A.jpg」の日付は「2016/06/25」となります。
    
[/code]


CC BY-SA 3.0
2017-06-24T08:32:22.247
35854
2017-06-28T09:40:59.550
8489
question
swift swift3
カスタムセルを用いたTableViewにて表示させたセルをセクション分けして再表示させたい


UITableView
に複数のセクションでセルを表示するには、[UITableViewDataSource](https://developer.apple.com/documentation/uikit/uitableviewdatasource)の

[code]

    func numberOfSections(in tableView: UITableView) -> Int
    
[/code]

メソッドを実装し、セクションの数を返すようにしてください。  
一覧、タグ別、日付別のどのボタンが選択されているのかを判定して、  
日付別なら `1` 、タグ別なら存在するタグの種類の数を返すことになるでしょう。

すでに日付別の表示ができているのなら、以下のメソッドは実装ずみだと思います。

[code]

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    
[/code]

こちらも選択中のボタンにあわせて、  
それぞれ適切な内容を返すように変更してください。

また、ボタン押下時に表示データを切り替えるには、テーブルビューに対して、`reloadData`メソッドを呼んでください。

なお、以下のようなデータの持ち方

> let image = ["A.jpg", "B.jpg", "C.jpg", "D.jpg"]  
>  let tag = ["A", "B", "A", "A"] //「A.jpg」のタグは「A」となります。  
>  let date = ["2016/06/25", "2016/06/24", "2016/06/23", "2016/06/22"]

をしていると、タグ別や日付別でデータの並び順が変化することに対応するのがとても難しくなります。  
セル1つ分のデータをまとめた struct または class を定義して、その型の配列としてデータを持つことをおすすめします。


CC BY-SA 3.0
2017-06-28T09:40:59.550
35940
2017-06-28T09:40:59.550
23829
35854
answer