Jako tytuł mówiący, że chcę przesunąć pierwszy wiersz UITableView
od lewej do prawej, gdy użytkownik przyjdzie na tym ViewController
.Swipe UITableViewCell bez dotyku
W moim ViewController
Mam jeden UITableView
, każdy wiersz ma dwa przyciski "Więcej" i "Usuń" akcję. Spójrz na poniższy kod:
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return true
}
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if (editingStyle == UITableViewCellEditingStyle.delete) {
}
}
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let deleteButton = UITableViewRowAction(style: .normal, title: "Delete") { action, index in
// Edit Button Action
}
deleteButton.backgroundColor = UIColor.red
let editButton = UITableViewRowAction(style: .normal, title: "Edit") { action, index in
// Delete Button Action
}
editButton.backgroundColor = UIColor.lightGray
return [deleteButton, editButton]
}
Wszystko działa dobrze. Ale chcę, aby użytkownik końcowy pojawił się na tym ViewController
po raz pierwszy, więc powiadomi, że dostępna jest operacja machnięcia, więc wykonają ją.
Pytanie brzmi: Jak mogę przesunąć automatycznie w lewo i w prawo dla pierwszego rzędu?
Co zrobiłem?
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let cell = posTblView.cellForRow(at: NSIndexPath(row: 0, section: 0) as IndexPath) as! POSUserTabelCell
UIView.animate(withDuration: 0.3, animations: {
cell.transform = CGAffineTransform.identity.translatedBy(x: -150, y: 0)
}) { (finished) in
UIView.animateKeyframes(withDuration: 0.3, delay: 0.25, options: [], animations: {
cell.transform = CGAffineTransform.identity
}, completion: { (finished) in
})
}
}
Powyższy kod przesuwa palcem/poruszającą się komórką, ale nie wyświetla przycisku "Usuń" i "Więcej".
Proszę, poprowadź mnie we właściwym kierunku.
Twoje podejście wydaje się być odpowiednie do przesuwania w lewo i prawo. Jednak nie jestem pewien, czy wbudowane przyciski mogą być podświetlone w ten sposób. To, co możesz zrobić na pewno, to umieścić "UIView" wyglądające jak natywne elementy sterujące poniżej zawartości, przesuń palcem, aby je odsłonić, a następnie usuń/ukryj je z komórki. Sprawdź tę odpowiedź: https://stackoverflow.com/questions/5301728/is-it-possible-to-programmatically-show-the-red-delete-button-on-a-uitableviewce – dirtydanee
Możesz użyć tej starej struktury: https://github.com/CEWendel/SWTableViewCell. Następnie w viewdidappear napisz: [cell showRightUtilityButtonsAnimated: YES]; –
W związku z tym celem jest automatyczne przesunięcie pierwszego rzędu, aby można było zobaczyć przyciski edycji. Czy to prawda? –