Ich verwende eine benutzerdefinierte UITableViewHeaderFooterView für mich TableView. Ich habe versucht, Zeilen in einem Abschnitt zu verstecken und anzuzeigen (was ich gerade arbeite). Ich habe beschlossen, einen Button (>) zum Abschnittskopf hinzuzufügen, damit ich ihn drehen kann, wenn der Abschnitt "expanded/collapsed" ist.Aktion, die auf Schaltflächen in allen TableView-Headern wirkt
Das Problem, das ich habe, erscheint, wenn ich auf die Schaltfläche klicke. Wenn die rotateCollapseButton()
-Funktion aufgerufen wird, rotieren die (>) Schaltflächen in allen Abschnittsheadern, nicht nur die angeklickte. Manchmal schließt es sogar die Schaltfläche aus, auf die geklickt wurde, oder das Klicken auf eine Schaltfläche wirkt sich auf eine andere aus und nicht auf sie selbst. Wie kann ich es so machen, dass nur der richtige Knopf rotiert?
Dies ist der Code, den ich für den benutzerdefinierten Header habe, den ich erstellt habe.
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
}
}
EDIT: Code, wo der Header initialisiert ...
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
}
Thank you!
Können Sie auch den Code einfügen, wie Sie den Abschnittskopf verwenden? weil, wenn Sie das gleiche Objekt verwenden, es wahrscheinlich der Grund ist, dass alle sich drehen – unkgd
Ich fügte eine Änderung oben hinzu. Hast du damit gemeint? –
Ja, werden alle Abschnitte auf dem Bildschirm angezeigt? Oder sehen Sie, wie der Pfeil nach dem Scrollen gedreht wird? – unkgd