#swift #xcode #uitableview #swift5
Вопрос:
Я только что создал представление таблицы и хочу реализовать функцию, которая позволяет пользователю удалять строку. Для этого я реализовал эту функцию:
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { if editingStyle == .delete { // Zeile löschen (Z.b. dann aus dem Array oder aus dem dauerhaftem CoreData) tableView.deleteRows(at: [indexPath], with: .fade) } }
Но вы все равно должны знать по моему вопросу, что я настроил свой сотовый с помощью этого кода:
let cell = tableView.dequeueReusableCell(withIdentifier: "timerCell", for: indexPath) as! timerTableViewCell cell.layer.borderWidth = 1 // cell.layer.borderColor = CGColor(red: 41 / 255, green: 171 / 255, blue: 226 / 255, alpha: 1) cell.layer.borderColor = CGColor(red: 0, green: 0, blue: 0, alpha: 1) cell.textLabel?.text = "Timer" cell.detailTextLabel!.text = "12:40" cell.layer.cornerRadius = 18 cell.clipsToBounds = true cell.layoutMargins.left = 30 cell.layoutMargins.right = 30 return cell
Но теперь у меня возникла проблема с удалением ячеек и рамки моей ячейки: моя ячейка имеет круглую границу, и если я теперь хочу удалить эту ячейку в своем приложении, граница внезапно становится квадратной и не становится снова круглой даже после отмены удаления. К сожалению, это выглядит очень плохо. Вот скриншоты:
У кого-нибудь когда-нибудь была такая проблема или идеи, и кто мог бы мне помочь?
Ответ №1:
Это означало бы, что ячейка CALayer
восстанавливается (вероятно, когда размер ячейки изменяется, чтобы отобразить кнопку удаления).
Возможно, вам захочется создать пользовательский класс ячеек представления и переопределить func layoutSublayers(of: CALayer)
ячейку (которую он наследует, хотя UIView и CALayerDelegate). Внутри этого метода вы можете вызвать super, а затем установить радиус угла на слое вашего представления.
Комментарии:
1. Привет. Спасибо за ваш ответ! Это работает, но работает не совсем так, как я хотел. Теперь у меня получается, что ячейка снова становится круглой, когда процесс удаления прерывается, но, к сожалению, она все еще становится угловой во время удаления.
Ответ №2:
Теперь я попробовал что-то новое и просто поместил вид на свою ячейку, а затем округлил этот вид вместо ячейки напрямую. Но я всегда получаю сообщение об ошибке с требуемым вводом. Это мой код:
let view: UIView = { let view = UIView() view.backgroundColor = .white view.layer.borderWidth = 1.5 view.layer.borderColor = CGColor(red: 0, green: 0, blue: 0, alpha: 1) view.layer.cornerRadius = 18 view.translatesAutoresizingMaskIntoConstraints = false return view }() override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: .default, reuseIdentifier: "timerCell") super.awakeFromNib() setConstrains() } func setConstrains() { self.addSubview(view) view.centerXAnchor.constraint(equalTo: self.centerXAnchor).isActive = true view.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true view.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 0).isActive = true view.rightAnchor.constraint(equalTo: self.rightAnchor, constant: 0).isActive = true view.heightAnchor.constraint(equalTo: self.heightAnchor, constant: 0).isActive = true view.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: 0).isActive = true } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") }```