[前提・実現したいこと]
iPadで画面が縦二分割になっていて、左がTableViewCell、右がViewの実装中
左のTableViewCell(xibで実装)を選んだときに右のView内に配置したlabel, ImageView, textViewが変わるように値を渡す方法が知りたいです(セグエ、SplitViewControllerは使わない方法で)。
考えたこと
① タップされたcustomeCellの行番号取得
② 取得した行番号に対応する右側の情報(Outlet接続しているLabel, Image, TextView, View)を取得
③ ②で取得した内容を画面右に表示
セルの行番号を取得するとこまでで止まってます。まず、右側の情報をどこに書けばいいか分からず(左側の情報を書くのと同じようにやったらエラーになったため)、その後それを反映する方法が分かりません。
現状のコード
import UIKit extension ViewController { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { //セル取得 let cell = tableView.dequeueReusableCell( withIdentifier: "cell", for: indexPath) as! CustomCell //xibの情報(テーブル全部を拾ってる状態) cell.dateLabel.text = dateList[indexPath.row] cell.threadTextView.text = threadList[indexPath.row] cell.bookLabel.text = bookList[indexPath.row] cell.userNumberLabel.text = userNumberList[indexPath.row] cell.backgroundColor = UIColor(red:0.20, green:0.27, blue:0.89, alpha:1.0) cell.textLabel?.textColor = .white return cell } //セル選択中 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { print("(indexPath.row)番目の行を選択した") } func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return 140 } } class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UIPopoverPresentationControllerDelegate { //右側 @IBOutlet weak var bookTitle: UILabel! @IBOutlet weak var bookDescription: UITextView! @IBOutlet weak var bookImage: UIImageView! @IBOutlet weak var rightView: UIView! let CustomCell = "UITableViewCell" func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return threadList.count } @IBOutlet weak var tableView: UITableView! //左側の情報 var toDo: [Int] = [0,1,2,3,4,5] var dateList: [String] = ["1","2","3","4","5"] var threadList: [String] = ["1","2","3","4","5"] var userNumberList: [String] = ["1","2","3","4","5"] override func viewDidLoad() { super.viewDidLoad() tableView.delegate = self tableView.dataSource = self tableView.register (UINib(nibName: "CustomCell", bundle: nil), forCellReuseIdentifier: "cell") } override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() } }
よろしくお願いします!
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。