
はじめまして。業務経験2ヶ月ほどのエンジニアです。
業務でswiftを使用するため、勉強をしており、以下のことを解決できずに数日悩んでおります。
どなたか解決の糸口をご教示いただけますと幸いです。
やりたいこと
ViewController (tableViewを配置している)
ButtonCell (ボタンを2つ配置しているセル)
cellのボタンを押下された場合、tableViewを配置しているviewControllerのメソッドを呼び出し、statusプロパティの更新とtableView.reloadDataをやりたい
問題点
tableViewがnilとなってしまい、tableView.reloadData()が実行できない。
記述したコード(ほとんど省力しています)
■ViewController (tableviewを配置しているクラス)
import UIKit class ViewController: BaseVC ,UITableViewDelegate, UITableViewDataSource { @IBOutlet private weak var tableView: UITableView! var status:Int = 1 override func viewDidLoad() { super.viewDidLoad() } func numberOfSections(in tableView: UITableView) -> Int { // 省略 } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { // 省略 } func didTap() { self.status = 2 tableView.reloadData() } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { //省略 (ここでButtonを定義しているcellクラスを呼び出している) } }
■Buttonを定義したCellクラス
import UIKit class ButtonCell: UITableViewCell { @IBOutlet weak var Button1: UIView! @IBOutlet weak var Button2: UIView! override func awakeFromNib() { super.awakeFromNib() } override func setSelected(_ selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) } @objc private func change1() { ViewController().didTap() } @objc private func change2() { ViewController().didTap() } }
試したこと
- storyboardのtableViewがViewControllerと接続が切れていないか、確認。
- 以下に記述している内容を参考に、以下のコードを試してみる。
let vc = storyboard?.instantiateViewController(withIdentifier: "ViewController") as! ViewController vc.tableView.reloadData()

回答1件
あなたの回答
tips
プレビュー