Как я могу реализовать экономию пресетов в Tableview

Мне нужна помощь У меня есть это приложение ColorSlider, которое меняет цвет квадрата с 3 ползунками RGB. Мне нравится создавать Tableview, где я могу хранить предустановки цвета и извлекать из имени предустановки, например. Ocean Blue, Emerald Green, Red Ferrary и т. Д. Я создаю Tableview нажатием кнопки, но я застрял на остальной части реализации. Пожалуйста, мне нужна помощь.

импорт UIKit

class ViewController: UIViewController {

@IBOutlet weak var redSlider: UISlider!
@IBOutlet weak var greenSlider: UISlider!
@IBOutlet weak var blueSlider: UISlider!
@IBOutlet weak var displaylbl: UILabel!
@IBOutlet weak var displayView: UIView!

var color:Color!

override func viewDidLoad() {
    super.viewDidLoad()

    color = Color(red: redSlider.value, green: greenSlider.value, blue: blueSlider.value)
    displaylbl.text = color.getString()
    displayView.backgroundColor = color.getColor()
}

@IBAction func sliderChanged(_ sender: UISlider) {
    if (sender.tag == 1){
        color.setRed(red: sender.value)
        displaylbl.text = color.getString()
        displayView.backgroundColor = color.getColor()
    }
    else if (sender.tag == 2) {
        color.setGreen(green: sender.value)
        displaylbl.text = color.getString()
        displayView.backgroundColor = color.getColor()
    }
    else if (sender.tag == 3) {
        color.setBlue(blue: sender.value)
        displaylbl.text = color.getString()
        displayView.backgroundColor = color.getColor()
    }
}

}

импорт UIKit

class Color {private var red: CGFloat private var green: CGFloat private var blue: CGFloat

init(red:Float, green:Float, blue:Float) {
    self.red = CGFloat(red)
    self.green = CGFloat(green)
    self.blue = CGFloat(blue)
}

func setRed(red:Float) {
    self.red = CGFloat(red)
}
func setGreen(green:Float) {
    self.green = CGFloat(green)
}
func setBlue(blue:Float) {
    self.blue = CGFloat(blue)
}

func getColor() -> UIColor {
    let color = UIColor(red: red/255, green: green/255, blue: blue/255, alpha: 1.0)

    return color
}
func getString() -> String {
    let string = "Red: \(Int(round(red)))\nGreen: \(Int(round(green)))\nBlue: \(Int(round(blue)))"
    return string
}

}


person Mazinger    schedule 25.08.2019    source источник
comment
Не могли бы вы объяснить это подробнее, потому что я не понял то, что вы хотели спросить. Можете быть более конкретными?   -  person Munzareen Atique    schedule 26.08.2019
comment
Спасибо, Музарин. в MainView у меня есть 3 ползунка R.G.B. значение ползунков создает цвет внутри квадрата, если я вижу цвет, мне нравится сохранять цвет в предустановках цвета в tableView, например. Ocean Blue или Red Ferrary или что-то в этом роде, поэтому, когда я нажимаю на ячейку, квадрат меняет цвет в соответствии с названием цвета. Если вы подскажете, с чего начать, я буду признателен. Пс.   -  person Mazinger    schedule 26.08.2019


Ответы (1)


Сначала вам нужно получить цвет RGB из ползунка и показать в поле, если вы выполнили эту часть, то теперь вам нужно сделать это всякий раз, когда вы показываете цвет в поле, вы просто создаете словарь с такими клавишами, как:

let dict = [ colorName : "whatever you want",
             colorCode : "Which you get from slider"
           ]

Добавьте его в массив, например:

arrayColor.append(dic)

Заполните ваше tableview из массива arrayColor, и в didselectatindexpath вам нужно получить colorCode вIndexPath.row и установить в поле.

Надеюсь, что это поможет вам. Для любого другого запроса комментарий ниже.

person Munzareen Atique    schedule 26.08.2019
comment
Спасибо, Мунзарин, это хорошая отправная точка! Я собираюсь начать работу над ними прямо сейчас, я буду держать вас в курсе - person Mazinger; 27.08.2019
comment
Извините, что беспокою вас снова, но что вы имеете в виду, когда в didselectatindexpath вам нужно получить colorCode вIndexPath.row и установить в поле. Вы можете написать пример кода? я был бы признателен - person Mazinger; 28.08.2019
comment
В tableView didselect вы получите строку массива в определенном indexPath.row, поэтому вам просто нужно получить эту строку и проанализировать в nsdictionary, чтобы получить colorCode, который вы установили при добавлении в массив. - person Munzareen Atique; 29.08.2019