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

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

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

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

Q&A

解決済

2回答

266閲覧

値を渡すとoptional("")になってしまいます。

退会済みユーザー

退会済みユーザー

総合スコア0

Swift

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

0グッド

0クリップ

投稿2019/03/05 17:24

前提・実現したいこと

FirstViewController()のdidSelectRowAt indexPathの中でtableView.cellForRow(at: indexPath)メソッドを使用して、遷移する先のNextViewControllerのlabelにセルの値を渡せています。
セルの値は、例えば "おはよう"といったstring型です。
タップするセルのindexは問いません。

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

しかしNextViewControllerのviewDidLoadの中でlabelをprintしてみると

optional("")

とログに出力されます。
どうしてこの出力なのでしょうか?
NextViewControllerでは値が空になっています。

セルの値は必ず入ってる前提なので、空であることはありえません。
どうにかセルの値をNextViewControllerへ遷移する前、もしくは後でlabelに渡したいのです。

該当のソースコード

//FirstViewController() func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let nextView = NextViewController() nextView.label.text = (tableView.cellForRow(at: indexPath)?.textLabel?.text)! self.navigationController?.pushViewController(NextViewController(), animated: true) }
class NextViewController: UIViewController { let firstViewController = FirstViewController() var label = UILabel() override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .red view.addSubview(label) label.backgroundColor = .white //labelの制約はここには書いていません。 print(" ここまで値を保持したいがOptional("")になっている。(label.text)") } } ``` ### 試したこと 値の渡し方についてはブログなどを拝見して試しました。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

ベストアンサー

swift

1self.navigationController?.pushViewController(NextViewController(), animated: true)

NextViewController()になっているので、新規の(labelを設定していない)NextViewControllerをpushしてしまってます。

投稿2019/03/06 00:25

fuzzball

総合スコア16731

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

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

退会済みユーザー

退会済みユーザー

2019/03/06 04:22

遷移先のインスタンスnextViewをpushViewControllerにセットすると解決できました。 ありがとうございました!
guest

0

Swiftでは UILabeltext 属性は String? 型です。

https://developer.apple.com/documentation/uikit/uilabel/1620538-text

したがって、 label.text を取得すると optional("") となりますよね。

投稿2019/03/05 18:05

mather

総合スコア6753

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問