前提・実現したいこと
structを用いてTableViewに記事の名前(title),ユーザー名(Id)を表示させ、タップするとWebページに画面遷移するというものです。
TableViewCellにはtitleとIdのLabelを設定しております。
発生している問題・エラーメッセージ
TableViewに記事及びIdが表示されない。(エラーコードの表示もなし)
該当のソースコード
ViewController
1 2import UIKit 3import Alamofire 4import SwiftyJSON 5import WebKit 6 7struct articlesStruct { 8 var title, userId, url: String 9} 10 11 12 13class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { 14 15 @IBOutlet weak var tableView: UITableView! 16 var articles: [articlesStruct] = [] 17 let cellId = "cellId" 18 19 20 21 override func viewDidLoad() { 22 super.viewDidLoad() 23 24 tableView.frame.size = view.frame.size 25 tableView.delegate = self 26 tableView.dataSource = self 27 28 navigationItem.title = "Qiita Client" 29 getQiitaApi() 30 } 31 32 func getQiitaApi(){ 33 AF.request("https://qiita.com/api/v2/items?page=1&per_page=20", method: .get).validate().responseJSON { response in 34 switch response.result { 35 case .success(let value): 36 let json = JSON(value) 37 json.forEach {(_, json) in 38 if let titleData = json["title"].string, 39 let userData = json["user"]["id"].string, 40 let urlData = json["url"].string { 41 let Data = articlesStruct(title: titleData, userId: userData, url: urlData) 42 self.articles.append(Data) 43 } 44 } 45 self.tableView.reloadData() 46 case .failure(let error): 47 print(error) 48 } 49 } 50 } 51 52 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 53 return articles.count 54 } 55 56 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 57 let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell") as! TableViewCell 58 cell.title?.text = articles[indexPath.row].title 59 cell.userName?.text = articles[indexPath.row].userId 60 return cell 61 } 62 63 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 64 if segue.identifier == "ViewController2" { 65 if let VC2 = segue.destination as? ViewController2 { 66 if let url = sender as? String { 67 VC2.url = url 68 } 69 } 70 } 71 } 72} 73 74
TableViewCell
1 2import UIKit 3 4class TableViewCell: UITableViewCell { 5 6 @IBOutlet weak var title: UILabel! 7 @IBOutlet weak var userName: UILabel! 8} 9
試したこと
TableViewCellへのLabel設置&Storyboardへの紐付け
title, userId, urlのstruct 作成
numberOfRowsInSectionの個数(今回はarticles.count)
cellForRowAtでのtitle&userIdの記述
cell.title?.text = articles[indexPath.row].title(useidも同様)
main.storyboadでのTableViewCellのidentifier設定
dataSource&delegateの設定(TableViewController)
回答2件
あなたの回答
tips
プレビュー