Swift : Сохранить цвет фона в память и передать его из ViewController в tableViewController
Всех приветствую! Мне нужна помощь, я новичок в программировании swift и не знаю, как сделать передачу цвета фона из одного контроллера в другой, при этом цвет должен сохраниться в памяти
Вот код основного табличного контроллера ( на который должен передаваться цвет ) :
class MainViewController: UITableViewController {
let identificators = ["identificators"]
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
tableView.reloadData()
}
@IBAction func unwindSegue(_ segue : UIStoryboardSegue){
guard let newNoteVC = segue.source as? NewNoteViewController else {return}
newNoteVC.saveNote(identificator: "identificators")
}
@IBAction func unwindSegueColor(_ segue : UIStoryboardSegue){
}
func removeNotifications(witchIdentifires identifires: [String]){
let center = UNUserNotificationCenter.current()
center.removePendingNotificationRequests(withIdentifiers: identificators)
}
// MARK: - Table view data source
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return Base.shared.notes.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! CustomTableViewCell
let note = Base.shared.notes[indexPath.row]
cell.nameNote.text = note.name!
return cell
}
override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let deleteaction = UITableViewRowAction(style: .default, title: "Delete") { _, _ in
Base.shared.notes.remove(at: indexPath.row)
self.removeNotifications(witchIdentifires: self.identificators)
tableView.deleteRows(at: [indexPath], with: .automatic)
}
return [deleteaction]
}
И вот код контроллера на котором этот цвет настраивается:
class SettingsViewController: UIViewController {
@IBOutlet weak var redSwitch: UISwitch!
@IBOutlet weak var greenSwitch: UISwitch!
@IBOutlet weak var blueSwitch: UISwitch!
@IBOutlet weak var redSlider: UISlider!
@IBOutlet weak var greenSlider: UISlider!
@IBOutlet weak var blueSlider: UISlider!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func cancelAction(_ sender : Any){
dismiss(animated: true)
}
func updateColor(){
var red : CGFloat = 0
var green : CGFloat = 0
var blue : CGFloat = 0
if redSwitch.isOn {
red = CGFloat(redSlider.value)
}
if greenSwitch.isOn{
green = CGFloat(greenSlider.value)
}
if blueSwitch.isOn{
blue = CGFloat(blueSlider.value)
}
let color = UIColor(red: red, green: green, blue: blue, alpha: 1)
let defaults = UserDefaults.standard
defaults.setValue(color, forKey: "color is changed")
}
@IBAction func switchChanged(_ sender: UISwitch) {
updateColor()
}
@IBAction func sliderChanged(_ sender: UISlider) {
updateColor()
}
@IBAction func buttonIsPressed(_ sender: UIButton) {
view.backgroundColor = .white
redSwitch.isOn = false
blueSwitch.isOn = false
greenSwitch.isOn = false
redSlider.value = 0
greenSlider.value = 0
blueSlider.value = 0
}
}
Очень надеюсь на вашу помощь
Ответы (1 шт):
Автор решения: ivanvorobei
→ Ссылка
Если правильно понял задачу, вам нужно взять модель цвета и передать ее как параметр на другой экран. Можно, к примеру, принимать параметр в инициализаторе.