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

Если правильно понял задачу, вам нужно взять модель цвета и передать ее как параметр на другой экран. Можно, к примеру, принимать параметр в инициализаторе.

→ Ссылка