Невозможно получить значение переключателя от другого VC Swift - PullRequest
0 голосов
/ 25 мая 2018

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

SetConViewController - это мой контроллер просмотра настроек, из которого я хочу получить свое значение.

let languageSettingsRef = SetConvViewController()
var englishRef = ""
// Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
if languageSettingsRef.swithEnglish.isOn{
    englishRef = "yes"
}

InКонтроллер вида ниже, есть переключатели для настроек

class SetConvViewController: UIViewController {
    var conversationSettingsReference: DatabaseReference!
    let userID = Auth.auth().currentUser?.uid

    var engS = "engS"
    var engGoster = ""

    @IBOutlet weak var swithEnglish: UISwitch!

    override func viewDidLoad() {
        super.viewDidLoad()

        if let eng2 = defaults.value(forKey: engS) {
            swithEnglish.isOn = eng2 as! Bool
        }
    }

    let defaults = UserDefaults.standard

    @IBAction func switchEng(_ sender: UISwitch) {
        defaults.set(sender.isOn, forKey: engS)
    }
}

Я получаю ноль, когда хочу получить доступ к значению из этого класса.

1 Ответ

0 голосов
/ 25 мая 2018

Первый Это ноль, потому что вы не загружаете ВК из раскадровки или xib

Вторая эта строка

let languageSettingsRef = SetConvViewController()

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

//

class SettingsViewController: UIViewController { 
     var setVc:SetConvViewController?
}

, когда вы представляете SettingsViewController с помощью segue / push, установите

settInstance.setVc = self

, затем спроситеvar о значении переключателя

if self.setVc.swithEnglish.isOn{
   englishRef = "yes"
}

Создание переменной как Bool является еще одним лучшим вариантом

...