前提・実現したいこと
現在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/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/15 08:28