сбросить переменные при переходе к другому ViewController - PullRequest
0 голосов
/ 04 июня 2019

моя проблема в том, что когда я переключаюсь на другой ViewController, мои переменные предыдущего вызова VC сбрасываются, поэтому я не могу делать то, что хочу, после того, как

@IBAction func BackBtn(_ sender: Any) {
    self.nbrQst = 10
    self.Switch1A = 2
    performSegue(withIdentifier: "Numero", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "Numero" {
        let vc = segue.destination as! ViewController
        vc.nbrQt = nbrQst
    }
    if segue.identifier == "Numero" {
        let vcNv = segue.destination as! ViewController
        vcNv.Switch1 = Switch1A
    }
}

ниже способа отправки информациииз моего файла Lvl1 в файл селектора lvl, чтобы добавить if if for для разблокировки lvl

@IBAction func BackBtn(_ sender: Any) {
    self.nbrQst = 10
    self.Switch1A = 2
    performSegue(withIdentifier: "Numero", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let vc = segue.destination as! ViewController
    vc.nbrQt = nbrQst
    vc.Switch1 += 2
}

это второй ViewController, который отправляет число первому, и я хочу, чтобы первый запомнил номери складывать их каждый раз, когда я нажимаю кнопку, которая отправляет цифры

1 Ответ

0 голосов
/ 05 июня 2019

Давайте назовем «Selector VC» главным VC.

Причина, по которой эти номера сбрасываются в главном VC, заключается в том, что когда вы нажимаете «BackBtn», вы на самом деле не возвращаетесь к главному VC, вывы создаете новый основной VC и идете туда (поскольку вы сделали performSegue(withIdentifier: "Numero", sender: self) в функции BackBtn, performSegue всегда приводит вас к новому VC, а не возвращает вас обратно).Новый главный VC имеет все эти поля, начиная с начального числа (я предполагаю, что изначально они равны нулю).

То, что вы хотите сделать, это вернуться назад, а не вперед.В зависимости от того, как вы перешли на уровень VC из основного VC, у вас есть разные способы возврата к основному VC.

Если вы помещаете все на контроллер навигации, то вы можете вернуться назад:

self.navigationController?.popToRootViewController(animated: true)

Если вы представляете все модально, вы можете вернуться на

self.dismiss(animated: true, completion: nil)

Вы сказали, что хотите обновить значениев главном VC, так что вы можете заблокировать / разблокировать следующий уровень.Очень стандартный способ достижения этого - через delegate, пожалуйста, закажите это («делегаты в Swift») и следуйте там их учебникам.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...