ViewControllerでbuttonのtagの中に得点ポイントを仕込んであり
そのbuttonをタップすると、ViewControllerのLabelにポイント表示する、
という簡単なものを作っています。
buttonのあるセルはXIBファイルで作成し、使いまわせるようにしています。

現在、UITableViewCellのbuttonアクション中からViewControllerの@IBOutletを利用しようとすると (今はdelegateで実行しています)
なぜかすべての@IBOutletがnilになってしまっているため落ちてしまいます。
どのようにすれば回避できるのでしょうか。よろしくお願いいたします。

■UITableViewCell

import UIKit

protocol Calk {
    func setPoint()
}

class BonusPointTableViewCell: UITableViewCell {

    @IBOutlet weak var pointImg: UIImageView!
    @IBOutlet weak var pointName: UILabel!
    @IBOutlet weak var addBtn: UIButton!

    var delegate: Calk!

    var ttvc = TopTableViewController()

    @IBAction func AddBtn(_ btn: UIButton) {

        let getPoint = Int(btn.tag)
        UserDefaults.standard.set(getPoint, forKey: "getPoint")

        self.delegate = ttvc

        delegate.setPoint()
    }

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}

■ViewController ※一部省略しています

import UIKit

class TopTableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, Calk {

    @IBOutlet var tableview: UITableView!

    @IBOutlet var dispPoint: UILabel!

    var myPoint: Int = 0

    var getPoint: Int = 0


    override func viewDidLoad() {
        super.viewDidLoad()

        tableview.dataSource = self
        tableview.delegate = self


        self.tableview?.register(UINib(nibName: "BonusPointTableViewCell", bundle: nil), forCellReuseIdentifier: "bonusPointCell")

    }


    /**
     * テーブル設定
     */

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return bonusName.count
    }

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 50
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCell(withIdentifier: "bonusPointCell", for: indexPath) as! BonusPointTableViewCell

        for i in 0...bonusName.count {
            if (i == indexPath.row) {
                // セルにポイント名を表示
                cell.pointName?.text = bonusName[i][0]
                // セルにポイント画像を表示
                getImg(i: Int(bonusName[i][1])!, c: cell)
                // セル内のボタンのタグに点数を埋め込んでおく
                cell.addBtn.tag = Int(bonusName[i][1])!
            }
        }

        return cell
    }

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

        let message = setMessage(mCode: bonusName[indexPath.row][2])

        let alert = UIAlertController(
            title: bonusName[indexPath.row][0],
            message: message,
            preferredStyle: .alert)

        alert.addAction(UIAlertAction(title: "OK", style: .cancel))

        self.present(alert, animated: true, completion: nil)
    }


    func setPoint() {
        getPoint = UserDefaults.standard.object(forKey:"getPoint") as! Int
        // ※ここでdispPointなどの@IBOutletがnilになってしまうため落ちます
        dispPoint.text = String(getPoint)    

    }

}

ViewControllerのメソッド実行したときの値