NavigationController に管理されている画面(AddViewController)から NavigationController に管理されていない HomeListViewController に戻るときに値を渡したい。
// ストーリーボードの様子
HomeListViewController → NavigationController → AddViewController
###発生している問題・エラーメッセージ
AddVC の saveBtn を押し homeVC へ戻るときに、home の tableview 更新のための値を渡せない。
いろいろためしたが 遷移先の homeVC がなぜか取得できない。
###該当のソースコード
// HomeListViewController.swift
@IBAction func addNewCell(_ sender: Any) {
// 1. let sb = UIStoryboard(name: "Main", bundle: nil) let navi = sb.instantiateViewController(withIdentifier: "naviToAdd") as! UINavigationController let addVC = navi.topViewController as! AddViewController // 2. データ引き渡し addVC.wordTextFieldStr = "" addVC.bodyStr = "" // 3. 遷移 present(navi, animated: true, completion: nil)
}
// AddViewController.swift
@IBAction func saveBtnTapped(_ sender: Any) {
let fileName = myTextField.text!
let body = myTextView.text!
// ファイル追加、配列を更新 monstersManager.addWord(fileName: fileName, body: body) let navi = self.presentingViewController as! UINavigationController // 落ちない print("presentingViewController は navi : \(navi)") print("navi.parent : \(String(describing: navi.parent))") // nil print("navi.presentingViewController : \(String(describing: navi.presentingViewController))") // nil // var homeVC = UIApplication.shared.keyWindow?.rootViewController as! HomeViewController // ダメ homeVC.isPrevVCAddMode = true dismiss(animated: true, completion: nil)
}
###試したこと
navi.parent
navi.presentingViewController
var homeVC = UIApplication.shared.keyWindow?.rootViewController as! HomeViewController
などで移動先の var homeVC を取得しようと試みるもうまくいかない。
回答1件
あなたの回答
tips
プレビュー