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

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

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

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

Q&A

解決済

1回答

736閲覧

【Swift】NavigationControllerを用いた画面遷移の時にデータ渡しができない

cocona15531

総合スコア6

Swift

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

0グッド

0クリップ

投稿2022/11/15 17:27

編集2022/11/17 18:12

前提

Swiftを最近勉強し始めた者です。
Swiftで一画面のタスクアプリを作っています。

実現したいこと

  • トップ画面に表示されているタスクを編集ボタンから編集できる機能を実装したいです。

発生している問題・エラーメッセージ

編集ボタンを押してUILabelに追加することはできました。
ですが、追加したテキストが表示されている状態で編集ボタンを押した際に、表示されているテキストが編集画面で消えてしまいます。
どのようにしたら編集画面のTextfieldに値を渡せるのでしょうか。ご教示いただきたいです。

イメージ説明

該当のソースコード

ShowViewController.swift

1import UIKit 2 3class ShowViewController: UIViewController { 4 5 @IBOutlet weak var textLabel: UILabel! 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 title = "ようこそ" 10 } 11 12 @IBAction func unwind(_ segue: UIStoryboardSegue) { 13 let edit = segue.source as! EditViewController 14 self.textLabel.text = edit.textField.text 15 } 16} 17

EditViewController.swift

1import UIKit 2 3class EditViewController: UIViewController { 4 5 @IBOutlet weak var textField: UITextField! 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 10 let tapGesture: UITapGestureRecognizer = UITapGestureRecognizer(target:self, action:#selector(dismissKeyboard)) 11 self.view.addGestureRecognizer(tapGesture) 12 } 13 14 @objc func dismissKeyboard(){ 15 // キーボードを閉じる 16 view.endEditing(true) 17 } 18}

試したこと

以下の記事を参考に自分なりに試してみましたが、解決できませんでした。

https://qiita.com/kai-utsunomiya/items/55bff354aaa15c4a58fe

https://www.oborodukiyo.info/Swift/v50/Swift-PassDataBetweenViewControllers

https://qiita.com/wadaaaan/items/342a3cc47faf746b353d##%20NavigationController(1)%E3%81%A8FirstVC

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

初心者の方でも理解しやすいであろう
簡単な方法を紹介します。

初心者の間は画面遷移で値を共有する場合に
「グローバル変数」を活用すると良いと思います。

class の外で変数を宣言することで
好きな場所で変数を使用することができます。

例えば次のような内容でどうでしょうか?
(申し訳ありませんが、動作確認はしておりません)

ShowViewController.swift

1import UIKit 2 3var passdLabel: UILabel! //追加 4 5class ShowViewController: UIViewController { 6 7 @IBOutlet weak var textLabel: UILabel! 8 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 title = "ようこそ" 12 passedLabel = textLabel //追加 13 } 14 15 @IBAction func unwind(_ segue: UIStoryboardSegue) { 16 let edit = segue.source as! EditViewController 17 self.textLabel.text = edit.textField.text 18 } 19}

EditViewController.swift

1import UIKit 2 3class EditViewController: UIViewController { 4 5 @IBOutlet weak var textField: UITextField! 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 self.textField.text = passdLabel.text //追加 10 11 let tapGesture: UITapGestureRecognizer = UITapGestureRecognizer(target:self, action:#selector(dismissKeyboard)) 12 self.view.addGestureRecognizer(tapGesture) 13 } 14 15 @objc func dismissKeyboard(){ 16 // キーボードを閉じる 17 view.endEditing(true) 18 } 19}

投稿2022/11/17 01:21

編集2022/11/17 01:35
uni2

総合スコア252

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

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

cocona15531

2022/11/17 09:12

いただいたコードを追加してみたところ、値の受け渡しをすることができました! ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問