Действие, влияющее на кнопки во всех заголовках TableView
Я использую пользовательский UITableViewHeaderFooterView для меня TableView. Я пытался реализовать скрытие и показ строк в разделе (который у меня работает). Я решил добавить кнопку (>) в заголовок раздела, чтобы можно было вращать его, когда раздел "развернут / свернут".
У меня возникает проблема, когда я нажимаю кнопку. Когда rotateCollapseButton()
При вызове функции вращаются кнопки (>) во всех заголовках разделов, а не только те, которые были нажаты. Иногда это даже исключает нажатие кнопки, или нажатие одной кнопки влияет на другую, а не на себя. Как сделать так, чтобы вращалась только правильная кнопка?
Это код, который у меня есть для пользовательского заголовка, который я создал.
var rotated:Bool = false
var section:Int?
weak var delegate:MessageGroupHeaderDelegate?
@IBAction func expandCollapseButtonClicked(_ sender: Any) {
rotateCollapseButton(sender as! UIButton)
delegate?.didPressExpandCollapseButton(atSection : self.section!)
}
func rotateCollapseButton(_ button:UIButton) {
UIView.animate(withDuration: 0.5) { () -> Void in
var rotationAngle:CGFloat = CGFloat(M_PI_2)
if self.rotated {
rotationAngle = CGFloat(0)
}
button.transform = CGAffineTransform(rotationAngle : rotationAngle)
self.rotated = !self.rotated
}
}
РЕДАКТИРОВАТЬ: код, где заголовок инициализируется...
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
// Dequeue with the reuse identifier
let cell = self.massMessageGroupsTableView.dequeueReusableHeaderFooterView(withIdentifier: "MessageGroupTableViewHeader")
let header = cell as! MessageGroupTableViewHeader
header.groupNameLabel.text = messageGroupsMap[section]?.messageGroup.name
header.section = section
header.setComposeButtonImage()
header.delegate = self
return cell
}
Спасибо!
1 ответ
В настройках вашего заголовка попробуйте сделать это вместо этого:
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
// Dequeue with the reuse identifier
let cell = self.massMessageGroupsTableView.dequeueReusableCell(withIdentifier: "MessageGroupTableViewHeader")
let header = cell as! MessageGroupTableViewHeader
header.groupNameLabel.text = messageGroupsMap[section]?.messageGroup.name
header.section = section
header.setComposeButtonImage()
header.delegate = self
let containingView : UIView = UIView()
containingView.addSubview(header)
return containingView
}