Ссылаться на переменную другого класса, не создавая новый экземпляр? - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть пользовательский класс "TableViewCell" и "ViewController". Я реализовал func TapGestureRecognizer в IBOutlet Label на «TableViewCell». Проблема в забаве c, есть переменная mainCounter, которая подсчитывает, сколько раз метка была нажата, и я хотел бы получить это значение в "ViewController". Я попытался создать экземпляр TableViewCell в ViewController и получить к нему доступ, но это всего лишь новый экземпляр, поэтому я мог получить только начальное значение 0. Может кто-нибудь дать мне хотя бы простую подсказку? вот два класса

'' '

class TableViewCell: UITableViewCell {

    @IBOutlet weak var showTimeLabel: UILabel!

    var index = 0
    var timeArr:[TimeStringLabel] = [TimeStringLabel]()

//******************************************
    public var mainCounter:Int = 0 
//******************************************

    @objc func labelTapped(_ sender: UITapGestureRecognizer) {

        if index >= timeArr.count {
        }

        else {
            self.mainCounter = timeArr[index].timeCounter        
            index += 1
            print(mainCounter) //In here, I can get values I want
        }
      }

    func setupLabelTap() {

           let labelTap = UITapGestureRecognizer(target: self, action: #selector(self.labelTapped(_:)))
           self.showTimeLabel.isUserInteractionEnabled = true
           self.showTimeLabel.addGestureRecognizer(labelTap)

       }
'''

' ''

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource{

    @IBOutlet weak var tableView: UITableView!

    var mainCounter:Int = 0

    var tableViewCell = TableViewCell()

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.

        self.tableView.delegate = self
        self.tableView.dataSource = self

    }

    @IBAction func resetButton(_ sender: Any) {

       print(tableViewCell.mainCounter) //In here, I can get only 0

    }

'' '

...