前提・実現したいこと
https://qiita.com/BMJr/items/ca7bcf76d36acbdef75e
上記のサイトの2つ目の方法で表示させるところまではできました。
さらに苗字の右側に
例えば、["東京","千葉","埼玉"] のようなデータを
苗字と紐づいて表示させるために
Swiftでどのように記述すればよいのかが知りたいです。
よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
Xcode 12.2
Swift 5.3.1
こんな感じでやりたくてコードは作ってみたもののうまくゆかない
Swift
1import UIKit 2 3class TableViewController: UITableViewController { 4 5 typealias MySectionRow = (mySection: String, myRow: Array<String>) 6 var mySectionRows = [MySectionRow]() 7 var selectedClass = "" 8 var selectedPerson = "" 9 10 var birthPlace = ["東京","千葉","埼玉","神奈川","茨城","山梨"] 11 12 override func viewDidLoad() { 13 super.viewDidLoad() 14 mySectionRows.append(("3年A組",["井上","加藤","田中"])) 15 mySectionRows.append(("3年B組",["鈴木","吉田"])) 16 mySectionRows.append(("3年C組",["遠藤","佐藤","村田","山田"])) 17 } 18 19 override func numberOfSections(in tableView: UITableView) -> Int { 20 return mySectionRows.count 21 } 22 23 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 24 return mySectionRows[section].myRow.count 25 } 26 27 override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { 28 return mySectionRows[section].mySection 29 } 30 31 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 32 let cell = tableView.dequeueReusableCell(withIdentifier: "Reuse", for: indexPath) 33 34 let label1Text = cell.viewWithTag(1) as! UILabel 35 36 label1Text.text = mySectionRows[indexPath.section].myRow[indexPath.row] 37 38 let label2Text = cell.viewWithTag(2) as! UILabel 39 40 label2Text.text = birthPlace[indexPath.row] 41 42 return cell 43 } 44 45 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 46 selectedClass = mySectionRows[indexPath.section].mySection 47 selectedPerson = mySectionRows[indexPath.section].myRow[indexPath.row] 48 } 49 50} 51
> 例えば、["東京","千葉","埼玉"] のようなデータを
> 苗字と紐づいて表示させるために
どういう感じで紐づけたいと考えてらっしゃるのでしょうか。
いまいちイメージがつかめないので、具体的にどのように表示したいのか示していただければと思います。
クラスのグループの中にある名前と出身地を同じセルに表示させたいです。
今までは、異なるクラスでも内容が同一のセルが固定された数だけ表示されていました。
ですが求めていることは、クラスごとにそれぞれのクラスの人数分だけ表示させることなので
探した結果、あのサイトにたどり着き、サンプルを参考に作成しましたら、最初の目的は達成しました。
次に求めていることは、1つのセルに名前と出身地2つを表示させることなので
その方法を探してみましたが、見つけることができなかったため、質問させていただきました。
いただいたコメントの解釈はいくつかあるのですが、
1. データ構造として名前と出身地を関連づける方法がわからない
2. ひとつの UITableViewCell に複数のラベルを配置し、各ラベルに名前と出身地を表示したい
のどちらになるのでしょうか。
ただ、1. が解決しないことには 2. は実現しませんので、そのあたりの理解度も明確にしていただければと思います。
1になります。
2については、既に2つのラベルを用意して、表示できる段階です。
そうなると、苗字と出身地をどのようにして紐づけたいのかわからない限り、回答するのは難しいと思います。
「こんな感じでやりたくてコードは作ってみたもののうまくゆかない」ということがわかれば、それに合わせて回答することは可能なのですが、ご提示いただくコードはありませんでしょうか。
birthPlaceの配列データを
mySectionRowsの配列1つにまとめて表示させたいのですが、
このようなコードでよろしいでしょうか?
ご提示、ありがとうございます。
方針が明確になりそうです。
回答1件
あなたの回答
tips
プレビュー