У меня есть TableView, и таблица заполняется из массива. Ячейка имеет тип TableViewCell.xib. Я хочу изменить цвет метки в ячейке.Установка цвета TableViewCell для выбора строки Swift 3
Вот мой TableViewController
struct cell_data {
let label1: String!
}
class TableViewController: UITableViewController {
let cellDataArray = [cell_data]([cell_data(label1: "This text is for label 1")])
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return cellDataArray.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = Bundle.main.loadNibNamed("TableViewCell", owner: self, options: nil)?.first as! TableViewCell
cell.label_1.text = cellDataArray[indexPath.row].label1
cell.selectionStyle = .none
let whiteRoundedView : UIView = UIView(frame: CGRect(x:10, y:5, width: self.view.frame.size.width - 20, height: cell.frame.size.height - 7))
whiteRoundedView.layer.backgroundColor = UIColor.green.cgColor
whiteRoundedView.layer.masksToBounds = false
whiteRoundedView.layer.shadowOffset = CGSize(width: -1, height: 1)
whiteRoundedView.layer.shadowOpacity = 0.3
cell.contentView.addSubview(whiteRoundedView)
cell.contentView.sendSubview(toBack: whiteRoundedView)
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = tableView.cellForRow(at: indexPath)
}
override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
let cell = tableView.cellForRow(at: indexPath)
}
}
То, что я хочу сделать быть в состоянии сделать, это изменить цвет метки ячейки при выборе строки , не затрагивая UIView внутри клетки. То есть, когда я изменяю высоту UIView, когда я выбираю строку, я попытался перезагрузить, но перезагрузка ячейки установила высоту UIView в исходную настройку.
И как только я установил цвет ярлыка, я хочу вернуть его к исходному цвету, когда я снижу выделение строки.
Надеюсь, я прояснил ситуацию. Заранее спасибо.
Не можете изменить ярлык на цвет хотите в tableView: didSelectRowAt: и сбросить его в tableView: didDeselectRowAt:? – ubiAle
@ubiAle No. Когда я меняю ярлык в файле didSelectRowAt, мне нужно будет перезагрузить строку, что означает, что она также перезагрузит UIView, и я потеряю все изменения, внесенные в нее, когда я выберу. – samuria
Почему вам нужно перезагрузить строку? – ubiAle