【Swift】UINavigationControllerの戻るボタンでRealmにデータを保存する方法

Swift

こんちには、フリーのITエンジニアでWeb(PHP:Laravel)のバッグエンドをメインにフルリモートでお仕事させて頂きながら、個人開発でiOSアプリを作っているMoritaです。

UINavigationControllerの戻るボタンを押したタイミングでRealmにデータを保存するを紹介します。

アプリの画面構成

Apple純正のNoteアプリのように、一覧画面のセルをタップするとメモの詳細が表示され、戻るボタンを押したタイミングでデータの更新処理を実施したい。

UINavigationControllerの戻るボタンのイベントでRealmにデータを保存する方法

詳細画面からNavigationの戻るボタンのイベントでRealmに保存をしています。

extension DetailViewController: UINavigationControllerDelegate {
    func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
        if viewController is HomeViewController {
            let realm = try! Realm()
            let model = MemoModel()
            try! realm.write {
                realm.add(model, update: .all)
            }
        }
    }
}

困ったポイント

上のコードで一覧画面に戻った際にviewWillAppear(_ animated: )でRealmからデータを取得し、UITableViewに紐付いたArrayに代入後、UITableView.reloadData()で更新をかけました。

しかい、UITableViewの値が更新されていない!!

調べたところviewWillAppear(_ animated: )でRealmからデータを取得した時点では、まだ戻るボタンのイベントで登録したデータが反映されていませんでした。

解決方法

Realmからのデータ取得とUITableView.reloadData()を呼ぶタイミングをviewDidAppear(_ animated: )へ変更することで解決できました。

コメント

タイトルとURLをコピーしました