画面遷移をする時にtextFieldの値を渡し、配列に追加してTableViewcellに表示させたいです。
具体的にはnikkitableViewControllerで『+』ボタンを押すと、hennsyuViewControllerに遷移し
そこでtextFieldに入力します。その後『完了』ボタンを押すことでnikkitableViewControllerにある配列に追加して、画面遷移しCellを生成したいです。
3画面構成になっているのですが、nikkitableViewController→ hennsyuViewController→ nikkitableViewControlleの流れの時だけ配列に追加したいです。
コードを書いてみたのですがCellが生成されず困っています。
文字数の都合で2番目の画面コード以下に記載します。
swift
import UIKit class nikkiTableViewController: UIViewController,UITableViewDelegate,UITableViewDataSource,UISearchBarDelegate{ private let cellId = "cellId" var addBarButtonItem:UIBarButtonItem!// var tableViewCell = nikkiTableViewCell() var topImageArray = [UIImage]() var nameArray = [String]() var dateArray = [String]() var hyoukaArray = [String]() var textViewArray = [String]() @IBOutlet weak var nikkiTableView: UITableView! override func viewDidLoad() {super.viewDidLoad() setupSearchBar() addBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addBarButtonTapped(_:))) addBarButtonItem.tintColor = UIColor.white //navigationVarの右側に追加 self.navigationItem.rightBarButtonItem = addBarButtonItem nikkiTableView.delegate = self nikkiTableView.dataSource = self let appearance = UINavigationBarAppearance() appearance.configureWithOpaqueBackground() appearance.backgroundColor = .rgb(red: 173, green: 216, blue: 230) //標準の高さ navigationItem.standardAppearance = appearance //ナビゲーションバーが透過する navigationItem.scrollEdgeAppearance = appearance //標準の文字の大きさ navigationItem.compactAppearance = appearance let tapGesture = UITapGestureRecognizer( target: self, action: #selector(dismissKeyboard)) view.addGestureRecognizer(tapGesture) tapGesture.cancelsTouchesInView = false } func setupSearchBar(){ if let navigationBarFrame = navigationController?.navigationBar.bounds { let searchBar: UISearchBar = UISearchBar(frame: navigationBarFrame) searchBar.delegate = self searchBar.placeholder = "タイトルで探す" searchBar.tintColor = UIColor.white searchBar.keyboardType = UIKeyboardType.default navigationItem.titleView = searchBar navigationItem.titleView?.frame = searchBar.frame } } @objc func dismissKeyboard() { navigationItem.titleView?.endEditing(true) } func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { searchBar.resignFirstResponder() } func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return 190 } func numberOfSections(in tableView: UITableView) -> Int { return 1 } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return nameArray.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = nikkiTableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as! nikkiTableViewCell //cell.topImageView?.image = topImageArray[indexPath.row] cell.nameLabel?.text = nameArray[indexPath.row] cell.dateLabel?.text = dateArray[indexPath.row] cell.hyoukaLabel?.text = hyoukaArray[indexPath.row] return cell } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let storyboard = UIStoryboard(name: "nikkiTableView", bundle: nil) let textVC = storyboard.instantiateViewController(withIdentifier: "textViewController") //値、参照渡しのコードを書く navigationController?.pushViewController(textVC, animated: true) //タップした後、セルの色が白色に戻る tableView.deselectRow(at: indexPath, animated: true) navigationItem.titleView?.endEditing(true) } @objc func addBarButtonTapped(_ sender: UIBarButtonItem) { let hennsyuVc = storyboard?.instantiateViewController(withIdentifier: "hennsyuViewController") as! hennsyuViewController navigationController?.pushViewController(hennsyuVc, animated: true) } override func viewWillAppear(_ animated: Bool) { nikkiTableView.reloadData() // TODO: ①に戻ってきたらUITableViewを再描画します。 if AppState.isEdited { // ③から完了をタップして戻ってきた場合は②に遷移します。 AppState.isEdited = false let textvc = storyboard?.instantiateViewController(withIdentifier: "textViewController") as! textViewController //textvc.nameField = nameArray navigationController?.pushViewController(textvc, animated: true) } } } class nikkiTableViewCell: UITableViewCell { @IBOutlet weak var topImageView: UIImageView! @IBOutlet weak var nameLabel: UILabel! @IBOutlet weak var dateLabel: UILabel! @IBOutlet weak var hyoukaLabel: UILabel! override func awakeFromNib() { super.awakeFromNib() } override func setSelected(_ selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) } }
0 コメント