質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

3回答

3849閲覧

Modallyで遷移して遷移元に戻る時に値を渡したい

syoco0330

総合スコア30

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/06/26 15:16

実現したいこと
Present Modallyで画面遷移後に、遷移先のTextFieldの値を遷移元に渡したい。

dismissで遷移元に戻っているのですが、値が渡されません。

presentでなら渡すことができるのですが、
画面が重なってしまうでの、dismissか何かで実装したいと思ってます。

ちなみにNavigationControllerは使っていないのですが、
遷移元の画面ではNavigationBarを使っています。

実現方法についてご教授いただけると幸いです。
よろしくお願いいたします。

swift

1 @IBAction func doneButton(_ sender: Any) { 2 if textField.text == "" { 3 4 return 5 } else { 6 7 let backVC = self.presentingViewController as! AddViewController 8 backVC.timerName = self.textField.text! 9 dismiss(animated: true, completion: nil) 10 11 } 12 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

もしかして、遷移元の viewController の viewWillAppear() などで渡された値を処理していたりしませんでしょうか。

iOS13 だったとしたら、 Present Modally を使い遷移先の viewController を表示し、dismiss() で戻ったとしても、遷移元の viewWillApperar() は呼ばれることが無いようです。

などなど。

全く同じコードでも遷移先の viewControllerを FullScreen で表示させれば、遷移元の viewWillAppear()は然るべきタイミングで呼び出されます。

投稿2020/06/26 23:18

TsukubaDepot

総合スコア5086

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syoco0330

2020/06/27 04:21

コメントありがとうございます。 今回はunwindSegueでの実装で完結しましたが、 viewWillApperar()での実装で不明な点がこちらのコメントで解消でき、非常に助かりました。 参考リンクを複数もご用意いただきありがとうございます。
guest

0

ベストアンサー

環境がわかりませんがunwindSegueで値を渡しながら戻れませんか?

値渡しが書いてある部分がなかったので、追記します。

swift

1 2// 遷移元に書いてね 3@IBAction func backFromHoge(segue: UIStoryboardSegue) { 4 let from = segue.source as! HogeViewController // <- 遷移先を取得する 5 self.timerName = from.textField.text ?? "" // 遷移先の値を取得して遷移元の変数に格納する 6}

投稿2020/06/26 18:41

編集2020/06/27 00:06
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syoco0330

2020/06/27 04:17

教えていただいたunwindSegueで実装ができました。 また、参考例のおかげでスムーズに進みました。 ご丁寧にご教授いただきありがとうございました。
guest

0

unwindSegueでの実装で解決

画面遷移元

Swift

1 @IBAction func unwind(_ segue: UIStoryboardSegue) { 2 // 他の画面から segue を使って戻ってきた時に呼ばれる 3 let from = segue.source as! TimerNameViewController // <- 遷移先を取得する 4 self.timerName = from.textField.text ?? " 5 tableView.reloadData() 6 }

画面遷移先

Swift

1import UIKit 2 3class TimerNameViewController: UIViewController { 4 5 @IBOutlet weak var textField: UITextField! 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 10 // Do any additional setup after loading the view. 11 } 12 13}

補足

画面遷移元にIBActionを記述しないと遷移先から遷移元に戻る時のボタンがExitと接続できない。

投稿2020/06/27 04:25

syoco0330

総合スコア30

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問