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

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

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

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

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

解決済

2回答

1214閲覧

値を渡しながら画面遷移をしたいです

Jonny_dayo

総合スコア48

iOS

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

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

1クリップ

投稿2019/08/31 15:00

前提・実現したいこと

①ユーザー情報を登録する画面をスクロールビューで作成
②TextFieldに名前など、ImageViewにアイコンを設定する
③登録ボタンを押すと次の画面のラベルとImageViewに先ほど入れた情報が反映される

③を実行した際にエラーが出るのでそれを解決したいです、、

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

Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value

該当のソースコード

@IBAction func registerTap(_ sender: Any) { performSegue(withIdentifier: "register", sender: nil) } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { let nextVC = segue.destination as! TimeLineViewController nextVC.nameLabel.text = userNameTextField.text nextVC.secondLabel.text = secondtextField.text nextVC.iconImage.image = icon.image }

試したこと

デバッグエリアを確認して見たのですが、reasonが書いてある行がなかったです、、

ツールのバージョン

Xcode : Version 10.3 (10G8)
Swift : Apple Swift version 5.0.1

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

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

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

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

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

guest

回答2

0

ベストアンサー

遷移先VCのライフサイクルの問題ではないでしょうか、
↓の時点ではUILabelなどは初期化されていないのでアクセスできないので、一旦プロパティ等に値を格納してから云々…

swift

1override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 2 3 let nextVC = segue.destination as! TimeLineViewController 4 5 print(nextVC.nameLabel) // <= UIObjectをプリントしてみて確認してください。 6 7 nextVC.nameLabel.text = userNameTextField.text 8 nextVC.secondLabel.text = secondtextField.text 9 nextVC.iconImage.image = icon.image 10 11 }

投稿2019/08/31 16:58

編集2019/08/31 17:36
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Jonny_dayo

2019/08/31 17:10

回答ありがとうございます!! print~をつけてみたところ、 Expression implicitly coerced from 'UILabel?' to 'Any'という黄色が出た後、 シミュレーター起動してみると同じエラーが出ました。。
退会済みユーザー

退会済みユーザー

2019/08/31 17:36

コンソールにラベルはnilですよ。ってプリントされてからエラーがでませんか? リンク先のように対応してみてください。
Jonny_dayo

2019/08/31 17:56

わわ!リンクついてるの見逃していました!! 確認してみたところnextVC〜の左側が間違っていました!! 遷移先でnameLabel.text = displayNameのようにし、 遷移元のコードをnextVC.displayName = userNameTextField.text! にしたところ無事に反映されました!!ありがとうございます!!!!!!
guest

0

問題のエラーは、let nextVC = segue.destination as! TimeLineViewControllerで発生していると思われます。原因は以下2点のどちらかだと思います。

  • StoryboardでViewControllerが正しく接続されていない
  • Storyboard上のTimeLineViewControllerにTimeLineViewController.swiftが紐づいていない

後者の場合、【Swift】新しいViewControllerの作成・追加方法(新規作成)の7.が参考になります。

投稿2019/08/31 15:25

編集2019/08/31 15:36
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Jonny_dayo

2019/08/31 15:49

回答ありがとうございます! 確認してみたのですが、遷移元ViewControllerも遷移先ViewControllerもclassに紐づいていて、segueのidentifierもコードと合致しています。 segueはボタンからではなく、Viewの黄色ボタン(なんちゃらViewControllerの箇所)から設定したのでそこもずれてはないかな、、と思います。。
退会済みユーザー

退会済みユーザー

2019/08/31 16:16

>segueのidentifierもコードと合致しています。 全く問題なさそうですね… 一応ですが、Storyboardで、Storyboard IDの代わりにRestoration IDのみ設定しているということもないですよね…? 申し訳ありませんが、私には分かりかねますので、他の方の回答をお待ちください。
Jonny_dayo

2019/08/31 16:25

むむ?もしかして盛大な勘違いをしていたのかもしれないんですが、 StoryboardはClassの設定をしてますが、 Identity欄のStoryboard IDとRestoration IDは現状空欄です… もしかしてこれが原因です…?
Jonny_dayo

2019/08/31 17:57

無事に解決しました!!ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問