从tableview生成全局变量计数器

问题描述 投票:0回答:1

我正在使用单个UITableview来实现一个UIViewController。根据选择的UITableview行,UIViewController上的材质只有轻微的变化。

我之前已经完成了多个UIViewControllers,因为UIViewControllers之间有很多不同的东西,比如布局等。但是作为视图控制器之间唯一的一个简单区别,我想使用全局计数器变量。我想使用将计数器的值设置为所选行的值并全局存储该值。

我宣布柜台:

var counter: Int?

然后,当选择一行时,我将计数器值设置为该行并执行segue:

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

    counter = indexPath.row
    self.performSegue(withIdentifier: "dayx", sender: self)    
}

在viewController中,我伪装成counter的值为'nil'。为什么是这样?我该如何解决呢?我知道这不是最好的做法,但在这种情况下我想尝试做的事情。

swift uitableview global-variables
1个回答
0
投票

counter变量的值变为nil并且它是预期的。因为当你想要一个新的控制器时,你没有分配计数器变量的值。您只需使用tableView didSelect方法更新现有控制器的计数器变量。这个问题有几种解决方案。在这里,我分享了最方便的一个。

class ViewController: UIViewController, UITableViewDelegate {

    @IBOutlet var tableView: UITableView!
    var counter: Int?
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        counter = indexPath.row
        self.performSegue(withIdentifier: "dayx", sender: self)
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        super.prepare(for: segue, sender: sender)
        if let destinationVC = segue.destination as? ViewController {
            destinationVC.counter = counter
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.