前提・実現したいこと
tableViewを使ってToDoアプリを作りたくて、xibでカスタムセルを作成しました。
しかしiOS Simulatorにビルドするとセルは生成されるもののラベルが表示されません(セルは出てきてもLabelが表示されない、すなわちセルは削除できるのでセルはあるはずなのに文字がないということです)。
該当のソースコード(TodoTableViewController)
Swift
1import UIKit 2 3class TodoTableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 4 5 @IBOutlet var tableView: UITableView! 6 @IBOutlet weak var todoLabel: UILabel! 7 8 9 var resultArray = [String]() 10 var dateArray = [String]() 11 12 override func viewDidLoad() { 13 super.viewDidLoad() 14 15 tableView.delegate = self 16 tableView.dataSource = self 17 18 self.tableView.register(UINib(nibName: "TodoTableViewCell", bundle: nil), forCellReuseIdentifier: "customCell") 19 20 } 21 22 override func viewWillAppear(_ animated: Bool) { 23 super.viewWillAppear(animated) 24 25 if UserDefaults.standard.object(forKey: "array") != nil { 26 27 resultArray = UserDefaults.standard.object(forKey: "array") as! [String] 28 } 29 30 tableView.reloadData() 31 32 } 33 34 func numberOfSections(in tableView: UITableView) -> Int { 35 // #warning Incomplete implementation, return the number of sections 36 return 1 37 } 38 39 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 40 41 return self.resultArray.count 42 } 43 44 45 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 46 47 let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) 48 49 todoLabel?.text = resultArray[indexPath.row] 50 51 return cell 52 } 53 54 55 func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { 56 if editingStyle == .delete { 57 58 resultArray.remove(at: indexPath.row) 59 60 UserDefaults.standard.set(resultArray, forKey: "array") 61 62 //dateArray.remove(at: indexPath.row) 63 64 //UserDefaults.standard.set(dateArray, forKey: "date") 65 66 tableView.reloadData() 67 } 68 69 } 70 71 72 73 74 75 76} 77
Swift
1 2 import UIKit 3 4class AddViewController: UIViewController { 5 6 @IBOutlet weak var textField: UITextField! 7 8 var array = [String]() 9 //var dateTimeArray = [String]() 10 11 override func viewDidLoad() { 12 super.viewDidLoad() 13 14 // Do any additional setup after loading the view. 15 } 16 17 @IBAction func add(_ sender: Any) { 18 19 if UserDefaults.standard.object(forKey: "array") != nil { 20 21 array = UserDefaults.standard.object(forKey: "array") as! [String] 22 } 23 24 array.append(textField.text!) 25 26 UserDefaults.standard.set(array, forKey: "array") 27 28 29 30 31 /* 32 if UserDefaults.standard.object(forKey: "date") != nil { 33 34 dateTimeArray = UserDefaults.standard.object(forKey: "date") as! [String] 35 36 } 37 38 //https://qiita.com/gonsee/items/d3fb641914d2ca45e858 39 let date = Date() 40 41 //そのデバイスがある地域の時刻を取得 42 guard let formatString = DateFormatter.dateFormat(fromTemplate: "yyyy/MM/dd HH:mm", options: 0, locale: Locale.current) else { fatalError() } 43 44 let dateFormatter = DateFormatter() 45 dateFormatter.dateFormat = formatString 46 47 48 49 let dateString = dateFormatter.string(from: date) 50 51 dateTimeArray.append(dateString) 52 53 //"01/02/2019, 22:29"のようになる 54 UserDefaults.standard.set(dateTimeArray,forKey: "date") 55 */ 56 57 58 self.navigationController?.popViewController(animated: true) 59 60 } 61 62 //キーボード以外に触れるとキーボードが閉じる 63 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 64 self.view.endEditing(true) 65 } 66 67 //AddViewを開いた時、キーボードも開く 68 override func viewDidAppear(_ animated: Bool) { 69 super.viewDidAppear(animated) 70 71 textField.becomeFirstResponder() 72 } 73 74 75 76 77} 78
Swift
1import UIKit 2 3class TodoTableViewCell: UITableViewCell { 4 5 @IBOutlet weak var label: UILabel! 6 @IBOutlet weak var dateLabel: UILabel! 7 8 9 override func awakeFromNib() { 10 super.awakeFromNib() 11 // Initialization code 12 } 13 14 override func setSelected(_ selected: Bool, animated: Bool) { 15 super.setSelected(selected, animated: animated) 16 17 // Configure the view for the selected state 18 } 19 20 21 22 23}
試したこと
selfを付けたり丸1日かけて調べましたがわかりませんでした
補足情報(FW/ツールのバージョンなど)
AddViewでtextFieldの内容をUserDefaultsのarrayに入れています
Swift, Xcode, macOSはいずれも最新です。
Cellはxibで作りました
回答1件
あなたの回答
tips
プレビュー