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

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

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

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

Swift

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

Q&A

解決済

1回答

336閲覧

TableViewにTextViewのTextを入れたいのですが Thread 1: signal SIGABRT が表示されます。

SoichiSugimo

総合スコア13

Xcode

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

Swift

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

0グッド

0クリップ

投稿2019/06/16 15:29

ある画面でTextViewに入力し、別画面のTableViewに保存したTextを、また別画面のTextViewで表示したいのですが、どうしてもThread 1: signal SIGABRTが表示されてしまいます。

下記の最も下部に表示されます。よろしくお願いします。

Swift

1import UIKit 2 3class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource,UITextViewDelegate { 4 5 6 7 @IBOutlet var tableView: UITableView! 8 9 10 //ViewController1で入力したTextを保存するための箱 11 var resultArray = [String]() 12 13 14 15 override func viewDidLoad() { 16 super.viewDidLoad() 17 18 tableView.delegate = self 19 tableView.dataSource = self 20 21 } 22 23 24 override func didReceiveMemoryWarning() { 25 super.didReceiveMemoryWarning() 26 // Dispose of any resources that can be recreated. 27 } 28 29 30 //(1) Nothing 31 override func viewWillAppear(_ animated: Bool) { 32 33 super.viewWillAppear(animated) 34 35 if UserDefaults.standard.object(forKey: "input") != nil { 36 37 resultArray = UserDefaults.standard.object(forKey: "input") as! [String] 38 39 } 40 41 tableView.reloadData() 42 43 } 44 45 //(2) 46 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 47 48 return resultArray.count 49 50 } 51 52 53 //(3) Nothing 54 func numberOfSections(in tableView: UITableView) -> Int { 55 56 return 1 57 58 } 59 60 //(4) セルに値を設定 61 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 62 63 let cell = tableView.dequeueReusableCell(withIdentifier: "MyCell", for: indexPath) as! MyTableViewCell 64 65 cell.textLabel?.text = resultArray[indexPath.row] 66 67 68 return cell 69 } 70 71 72 73 74 //(5) 75 func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { 76 77 if editingStyle == .delete{ 78 79 resultArray.remove(at: indexPath.row) 80 81 UserDefaults.standard.set(resultArray, forKey: "input") 82 83 tableView.reloadData() 84 85 } 86 87 } 88 89 90 //セルが選択された時 91 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 92 93 // 次の画面へ移動 94 performSegue(withIdentifier: "next", sender: resultArray[indexPath.row]) 95 } 96 97 98 99 //セル選択時のデリゲートメソッドからperformSegueをコールしています。performSegueは遷移前にprepareを呼び出します。 100 override func prepare(for segue: UIStoryboardSegue,sender: Any!) { 101 102 let nextVC = segue.destination as! ViewController2 103 104 let _ = nextVC.view 105 106 nextVC.label.text = sender as? String 107 108 } 109 110} 111

エラーが出るのは下記の部分です

Swift

1 override func prepare(for segue: UIStoryboardSegue,sender: Any!) { 2 3 let nextVC = segue.destination as! ViewController2 4 5 let _ = nextVC.view 6 7 nextVC.label.text = sender as? String 8 9 }

イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんにちは。

たぶんprepareのsegue.destinationに入っているインスタンスはまだアウトレットなどの初期化が終わっていないと思いますので、label.textに直接代入するのではなく、一旦メンバー変数渡しておいて後からlabel.textに格納するのが良さそうです。

参考:
Swift初心者メモ Storyboardのsegueで遷移した画面に値を渡す
https://qiita.com/39_isao/items/5f09c96a8a4c2de7c8fe

投稿2019/06/17 00:00

編集2019/06/17 00:00
takabosoft

総合スコア8356

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

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

SoichiSugimo

2019/06/17 09:22

回答ありがとうございます!! 具体的にどう修正するかも教えていただければ幸いです。
takabosoft

2019/06/18 08:39

> 具体的にどう修正するかも教えていただければ幸いです。 リンク先に具体的にどうするかが書かれています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問