Генерация счетчика глобальной переменной из таблицы - PullRequest
0 голосов
/ 02 марта 2019

Я использую один UITableview, переходящий к одному UIViewController.В UIViewController есть только небольшое изменение материала в зависимости от того, какая строка UITableview выбрана.

Я сделал это перед тем, как перейти к нескольким UIViewControllers, потому что между UIViewControllers было много разных вещей, таких как макеты и т. Д. Но в качестве единственного простого различия между контроллерами представления я хочу использовать глобальную переменную-счетчик.Я хочу использовать установить значение счетчика на значение выбранной строки и сохранить это значение глобально.

Я объявляю счетчик:

var counter: Int?

Затем, когда строка выбрана, яустановите значение счетчика для этой строки и выполните переход:

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

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

В viewController, который я привел к counter, есть значение 'nil'.Почему это?И как я могу это исправить.Я знаю, что это не лучшая практика, но это то, что я хочу попробовать и сделать в этом случае.

1 Ответ

0 голосов
/ 02 марта 2019

Значение переменной counter становится nil, и это ожидается.Потому что, когда вы собираетесь искать новый контроллер, вы не присваиваете значение переменной counter.Вы просто обновляете переменную счетчика вашего существующего контроллера методом 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
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...