Как передать состояние кнопки(checkBox) через UserDefaults в другой контроллер?

Для передачи состояния кнопки (checkBox) через UserDefaults в другой контроллер в iOS, вы можете использовать следующий подход:

1. Сначала вам нужно убедиться, что состояние checkBox сохраняется в UserDefaults при изменении его состояния. Вы можете использовать метод addTarget(_:action:for:) для добавления действия при изменении состояния checkBox. В этом действии вы должны обновить значение UserDefaults с новым состоянием checkBox.

Вот пример кода:

// Ваш контроллер, содержащий checkBox

var checkBoxState: Bool {
    get {
        return UserDefaults.standard.bool(forKey: "checkBoxState")
    }
    set {
        UserDefaults.standard.set(newValue, forKey: "checkBoxState")
    }
}

func setupCheckBox() {
    // Создание и настройка checkBox
    
    checkBox.addTarget(self, action: #selector(checkBoxStateChanged), for: .valueChanged)
}

@objc func checkBoxStateChanged() {
    checkBoxState = checkBox.isChecked
}

2. Далее вам нужно обновить состояние checkBox в другом контроллере на основе сохраненного значения UserDefaults. Вы можете сделать это в методе viewDidLoad() или в методе, вызываемом после загрузки данных.

Вот пример кода:

// Ваш другой контроллер

func updateCheckBoxState() {
    checkBox.isChecked = UserDefaults.standard.bool(forKey: "checkBoxState")
}

override func viewDidLoad() {
    super.viewDidLoad()
    
    updateCheckBoxState()
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    
    updateCheckBoxState()
}

Теперь состояние checkBox будет передаваться через UserDefaults между контроллерами. При изменении состояния checkBox в одном контроллере, это состояние будет сохранено в UserDefaults и затем обновлено в другом контроллере при загрузке данных или каждый раз, когда контроллер появляется на экране.

Важно помнить, что UserDefaults используется для хранения небольших и простых данных. Если вам необходимо передавать более сложные или большие объекты между контроллерами, вам следует рассмотреть использование других методов и паттернов, таких как делегаты, блоки (closures) или паттерн наблюдателя (Observer pattern).