Я просматривал этот форум, но не нашел ничего связанного с этим.
Я хотел бы взять под контроль функцию выбора UITableView: стилизовать ячейку при выборе и отмене выбора и оставить ее после того, какповторно используется.
Действие, когда пользовательский щелчок идет с анимацией, объявляется в файле TableViewController
, конечно:
func selectWorldMessage(indexPath: IndexPath) {
...
cell.attributedText = worldMessage.message.wholeWorldMessageAttributedString()
UIView.animate(withDuration: duration, animations: {
cell.bubbleImageView.tintColor = appColors.worldMessageBubbleSelected
cell.timeLabel.isHidden = false
cell.messageLabelBottomConstraint.constant = 14
cell.messageLabelTopConstraint.constant = 14
cell.timeLabel.alpha = 1.0
self.view.layoutIfNeeded()
self.tableView.beginUpdates()
self.tableView.endUpdates()
self.lastContentOffsetY = nil
}, completion: nil)
...
func deselectWorldMessage(indexPath: IndexPath) {
...
Но.предположим, что вы прокручиваете вниз и вверх, ячейка используется повторно.Я должен оформить это снова.Где мне это сделать?
A) В функции TableViewController
cellForRowAt
?
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
....
// If previously was selected
if (currentSelectedIndexPath == indexPath) {
cell.messageLabel.attributedText = worldMessage.message.wholeWorldMessageAttributedString()
cell.bubbleImageView.tintColor = appColors.worldMessageBubbleSelected
cell.timeLabel.isHidden = false
cell.messageLabelBottomConstraint.constant = 14
cell.messageLabelTopConstraint.constant = 14
} else {
cell.messageLabel.attributedText = worldMessage.message.shortenWorldMessageIfNeededAttributedString()
cell.bubbleImageView.tintColor = appColors.worldMessageBubble
cell.timeLabel.isHidden = true
cell.messageLabelBottomConstraint.constant = 10
cell.messageLabelTopConstraint.constant = 10
}
B) Или в функции Cell
setSelected
?
override func setSelected(_ selected: Bool, animated: Bool) {
if selected == true {
self.messageLabel.attributedText = worldMessage.message.wholeWorldMessageAttributedString()
self.bubbleImageView.tintColor = appColors.worldMessageBubbleSelected
self.timeLabel.isHidden = false
self.messageLabelBottomConstraint.constant = 14
self.messageLabelTopConstraint.constant = 14
} else {
self.messageLabel.attributedText = worldMessage.message.shortenWorldMessageIfNeededAttributedString()
self.bubbleImageView.tintColor = appColors.worldMessageBubble
self.timeLabel.isHidden = true
self.messageLabelBottomConstraint.constant = 10
self.messageLabelTopConstraint.constant = 10
}
}
Что будет лучше и потреблять меньше энергии?