・やりたいこと
画面を遷移するタイミングで、tableView内のcellのテキストを全て取得したい。
理想としては、増やしたcell分のtextFieldの値をリストとして次の画面に引き継ぎたいです。
とても中途半端なコードとなっていますが、よろしくお願いします。
import UIKit class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { let myItems: NSMutableArray = [] var itemCount = 0 @IBOutlet weak var myTableView: UITableView! @IBOutlet weak var addButton: UIButton! @IBOutlet weak var toolbar: UIToolbar! override func viewDidLoad() { super.viewDidLoad() myTableView.register (UINib(nibName: "customMainCells", bundle: nil),forCellReuseIdentifier:"cell") addCell() addCell() } @IBAction func touchAddButton(_ sender: Any) { addCell() } /* addButtonが押された際呼び出される */ func addCell() { if(itemCount<10){ // myItemsに追加. myItems.add("add Cell") // TableViewを再読み込み. myTableView.reloadData() itemCount = itemCount+1 } } //追加③ セルの個数を指定するデリゲートメソッド(必須) func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return myItems.count } //追加④ セルに値を設定するデータソースメソッド(必須) func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cellContext = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! customMainCells cellContext.cellDisplay ( indexNum : indexPath ) return cellContext } /* Cellを挿入または削除しようとした際に呼び出される */ func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { // 削除のとき. if editingStyle == UITableViewCell.EditingStyle.delete { print("削除") // 指定されたセルのオブジェクトをmyItemsから削除する. myItems.removeObject(at: indexPath.row) // TableViewを再読み込み. tableView.reloadData() } } // ①セグエ実行前処理 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { ///////////////////////////////// //この辺りで値を取得したいと思い、とりあえず1cell分だけと考えていろいろ試していますがよくわかりません ///////////////////////////////// //Int型からIndexPath型にキャスト let indexPath = IndexPath(index: 1) //indexPathでセルを指定可能 let cell = myTableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! customMainCells let myText = cell.myTextView.text print(myText) ////////////////////////////////// // ②Segueの識別子確認 if segue.identifier == "resultSegue" { } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }
import UIKit class customMainCells: UITableViewCell { @IBOutlet weak var myTextView: UITextField! func cellDisplay(indexNum: IndexPath){ self.myTextView.text = String(indexNum.row) } }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/14 11:29 編集