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

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

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

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

解決済

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

cocona15531
cocona15531

総合スコア6

Swift

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

1回答

0グッド

0クリップ

372閲覧

投稿2022/11/15 17:27

編集2022/11/16 00:54

前提

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/ツールのバージョンなど)

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

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答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

総合スコア177

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

cocona15531

2022/11/17 09:12

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Swift

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