前提
現在ToDoアプリを作成しています。
データの保存はRealmを用いています。
アプリでやりたいこととしては
1_タスク入力画面に推移しタスクを入力する
2_タスク一覧画面にタスクが追加される
3_タスクをタップするとそのタスクのメモ画面に推移する
4_タスクにメモを記入し保存する(それぞれのタスクにそれぞれのメモを書きたい)
といった感じで、現在3までできています。
4の動作を実行したいのですがアプローチ方法がわからず止まってしまっています。
###質問内容
どうタスクとメモを関連づけるのか、どのようにアプローチしていけば実現できるか助言いただきたく質問させていただきました。
(正直なところRealmの知識が未熟で、手本のコードを見ながら理解しようとしているのですが大まかな仕組みがいまだに掴めていません。)
現在のソースコード
タスク一覧画面
import UIKit import RealmSwift class ViewController: UIViewController,UITableViewDataSource,UITextFieldDelegate,UITableViewDelegate { var todoItems: Results<Todo>! @IBOutlet weak var table: UITableView! override func viewDidLoad() { super.viewDidLoad() table.dataSource = self let realm = try! Realm() todoItems = realm.objects(Todo.self) table.reloadData() table.delegate = self //空のセルの区切り線を消す処理 table.tableFooterView = UIView() //ナビバーのタイトルを大きくする(スクロール時は小さくなる) navigationController?.navigationBar.prefersLargeTitles = true } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) table.dataSource = self let realm = try! Realm() todoItems = realm.objects(Todo.self) table.reloadData() } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return todoItems.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) let object = todoItems[indexPath.row] cell.textLabel?.text = object.title cell.textLabel!.font = UIFont(name: "Arial-BoldMT", size: 16) return cell } func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { if editingStyle == .delete { deleteTodo(at:indexPath.row) table.reloadData() } } var currentItem: String? = nil func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { print("hello world"); tableView.deselectRow(at: indexPath, animated: true) currentItem = todoItems[indexPath.row].title self.performSegue(withIdentifier: "tomemo", sender: nil) } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "tomemo" { let memoViewController:memoViewController = segue.destination as! memoViewController memoViewController.title = currentItem } } func deleteTodo(at index: Int) { let realm = try! Realm() try! realm.write { realm.delete(todoItems[index]) } } }
タスクのメモ画面
import UIKit import RealmSwift class memoViewController: UIViewController { @IBOutlet weak var memo: UITextView! override func viewDidLoad() { super.viewDidLoad() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } @IBAction func savememo(_ sender: Any) { } }
タスク追加画面
import UIKit import RealmSwift class addViewController: UIViewController, UITextFieldDelegate { @IBOutlet weak var textBox: UITextField! override func viewDidLoad() { super.viewDidLoad() textBox.delegate = self } @IBAction func addbtn(_ sender: Any) { let realm = try! Realm() let todo = Todo() todo.title = textBox.text! try! realm.write { realm.add(todo) } self.navigationController?.popViewController(animated: true) } func textFieldShouldReturn(_ textField: UITextField) -> Bool { self.textBox.resignFirstResponder() return true } }
よろしくお願いいたします。。
回答1件
あなたの回答
tips
プレビュー