Для передачи состояния кнопки (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).