Swiftだと、UITableViewの中にあるセル、UITableViewCellにデータを入れて表示するというより、指定された行に表示するUITableViewCellを返して表示するという感じです。
UITableViewでは、複数の行を持つと思うので、表示したいデータは配列で持っておくと便利かと思います。
サンプルコードでは、表示したいデータを変数prefectureListに配列で持っています。
ViewController.swift
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { ViewData[ "atmark" ]IBOutlet weak var tv: UITableView! ViewData[ "atmark" ]IBOutlet weak var lblNote: UILabel! //UITableViewに表示するデータのリスト var prefectureList: [ String ] = [] //UITableViewの行の数 func tableView( _ tableView: UITableView, numberOfRowsInSection section: Int ) -> Int { return self .prefectureList.count } //UITableViewに表示するUITableViewCellを返して表示する func tableView( _ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let i: Int = indexPath.row //メモリの使用量の圧縮のためリサイクル処理を入れています var cell = tableView.dequeueReusableCell(withIdentifier: "cell" ) if cell == nil { //リサイクルできない時は新規に作成 cell = UITableViewCell(style: . default , reuseIdentifier: "cell" ) } cell.textLabel?.text = self .prefectureList[i] return cell } //行をタップしたら、そのデータを次の画面に渡して遷移する func tableView( _ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let parameter: String = self .prefectureList[indexPath.row] self .tv.deselectRow(at: indexPath, animated: true) self .performSegue(withIdentifier: "showTwitterList" , sender: parameter) } override func viewDidLoad() { super .viewDidLoad() // Do any additional setup after loading the view, typically from a nib. tv.delegate = self //ここで配列にデータを読み込んでいます if let path: String = Bundle.main.path(forResource: "saigai-prefList" , ofType: "csv" ) { let enc = String .Encoding.utf8 do { let s = try String (contentsOfFile: path, encoding: enc) let rawData = s.split(separator: "\r\n" ) for d in rawData { if String (d) == "都道府県" { //何もしない } else { print(d) self .prefectureList.append( String (d)) } } } catch { print( "ファイルの内容の取得に失敗しました。" ) } } print( "\(self.prefectureList.count)" ) self .tv.reloadData() } override func didReceiveMemoryWarning() { super .didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } override func prepare( for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "showTwitterList" { let destViewController = segue.destination as ! TwitterListViewController //画面遷移先にデータを受け渡している destViewController.parameter = sender as ! String } } } |