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

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

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

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

Swift

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

Q&A

解決済

1回答

1040閲覧

配列に追加したアイテムを、推移先のビューのラベルに表示したい。

Atsuya-11

総合スコア12

Xcode

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

Swift

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

0グッド

0クリップ

投稿2020/01/14 11:21

前提・実現したいこと

現在ToDoアプリを作成しています。
テーブルビューセルに、追加したタスクを表示するところまではできています。(itemArrayに保存しています)
この後、buttonを押し別の画面に推移するのですが、その推移先の画面に追加済みのタスクを表示したいです。

推移先の画面に表示される時のイメージ⬇️(それぞれのタスクはただテキストとして表示されるようにしたい)
・タスク1
・タスク2
・タスク3
・タスク4
・タスク5

どのように配列に保存しているデータを他の画面で表示すればいいのか、わからないのでコードはファイル全体を貼らせていただきます。。。

labelで表示するかどうかなどアプローチ方法を教えていただきたいです。
よろしくお願いします。

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

Cannot assign value of type '[Item]' to type 'String'

該当のソースコード

import UIKit class ToDoViewController: UITableViewController, UITextFieldDelegate{ //メモNo var memoNo = "" var itemArray:[Item] = [] override func viewDidLoad() { super.viewDidLoad() tableView.dataSource = self //空のセルの区切り線を消す処理 tableView.tableFooterView = UIView() //ナビバーのタイトルを大きくする(スクロール時は小さくなる) navigationController?.navigationBar.prefersLargeTitles = true } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } //セルの総数を設定するメソッド override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return itemArray.count } //セルの内容を決めるところ,セルに値をセットする override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "TodoCell", for: indexPath) //TodoCellのセルに同じ番号のitemArrayの中身を表示する let item = itemArray[indexPath.row] //itemArrayの中身を表示 cell.textLabel?.text = item.title } var currentItem: String? = nil //クリックしたらチェックマークが表示される機能 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { tableView.deselectRow(at: indexPath, animated: true) currentItem = itemArray[indexPath.row].title self.memoNo = itemArray[indexPath.row].title self.performSegue(withIdentifier: "nextSegue", sender: nil) } var nippoutext: String? = nil @IBAction func AutoNipoou(_ sender: Any) { self.performSegue(withIdentifier: "Auto Layout", sender: nil) } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "nextSegue" { let detailViewController:DetailViewController = segue.destination as! DetailViewController detailViewController.title = currentItem detailViewController.memoNo = self.memoNo } if segue.identifier == "Auto Layout" { let autonippouTableViewController:AutonippouTableViewController = segue.destination as! AutonippouTableViewController autonippouTableViewController.sendText = ***//ここでタスクを渡したいが、アプローチがわからないです。。 } } @IBAction func addButtonPressed(_ sender: Any) { var textField = UITextField() let alert = UIAlertController(title: "新規タスク", message: "", preferredStyle: .alert) let action = UIAlertAction(title:"追加", style: .default) {(action) in let newitem: Item = Item(title: "  (textField.text!)") //アイテム追加処理 self.itemArray.append(newitem) self.tableView.reloadData() } alert.addTextField{ (alertTextField) in alertTextField.placeholder = "タスク名を入力" textField = alertTextField } alert.addAction(action) present(alert, animated:true,completion: nil) } //スワイプした時に呼ばれる処理 override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { itemArray.remove(at: indexPath.row) let indexPaths = [indexPath] tableView.deleteRows(at: indexPaths, with: .automatic) } }

試したこと

そのまま配列を入力したら、Itemではなくstringを入れてくださいと出ました。
配列の中にしまっているデータはどのようにして渡せばいいのでしょうか。

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

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

AutonippouTableViewController で定義されている sendText という変数の型は String 型なので, [Item] 型を代入することはできません.
なので, sendText の型を [Item] にすればいいと思います.
ただし,変更した場合, sendText という変数名から配列を想定することは難しいので,僕なら変数名を変えます.

投稿2020/01/15 04:53

s.m_1

総合スコア293

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

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

Atsuya-11

2020/01/15 08:28

ありがとうございます! やり方を見直して進めることにしました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問