実現したいこと
メモアプリで、まずメモ作成の画面に行って、そこでTextField,TextViewに入力し、前の画面に戻る時、その時にCollectionViewの表示内容を更新したい。
該当のソースコード
Swift
『メモ作成画面』
import UIKit
class MemoViewController: UIViewController {
@IBOutlet var fie:UITextField! @IBOutlet var vie:UITextView! let savedata:UserDefaults = UserDefaults.standard var titles:[String] = [] var contents:[String] = [] override func viewDidLoad() { super.viewDidLoad() savedata.register(defaults:[ "titles":[], "contents":[]]) titles = savedata.object(forKey: "titles") as! [String] contents = savedata.object(forKey: "contents") as! [String] } @IBAction func save() { let title = fie.text! let content = vie.text! titles.append(title) contents.append(content) savedata.set(titles, forKey: "titles") savedata.set(contents, forKey: "contents") self.navigationController?.popViewController(animated: true) }
}
「CollectionView画面」
import UIKit
class ListViewController: UIViewController,UICollectionViewDataSource {
@IBOutlet var collecView:UICollectionView! var savedata:UserDefaults = UserDefaults.standard var titles:[String] = [] var contents:[String] = [] override func viewDidLoad() { super.viewDidLoad() savedata.register(defaults:[ "titles":[], "contents":[]]) titles = savedata.object(forKey: "titles") as! [String] contents = savedata.object(forKey: "contents") as! [String] let config = UICollectionLayoutListConfiguration(appearance: .grouped) collecView.collectionViewLayout = UICollectionViewCompositionalLayout.list(using: config) } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) collecView.reloadData() print("OK") } func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return titles.count } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collecView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) var contentfig = UIListContentConfiguration.cell() contentfig.text = titles[indexPath.item] contentfig.secondaryText = contents[indexPath.item] cell.contentConfiguration = contentfig return cell }
}
試したこと
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
collecView.reloadData()
}
を書いたのですが、上手く更新できません。
補足情報(FW/ツールのバージョンなど)
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
collecView.reloadData()
print("OK")
}
ここのprint(”OK")の部分はきちんと反応しました。
更新だけが出来ません。
回答をお願いします。

回答1件
あなたの回答
tips
プレビュー