comment faire pour modifier la hauteur d'une cellule unique quand on clique dessus?
J'ai pour redimensionner une seule ligne de mon tableView lorsque l'utilisateur clique dessus. Comment je peux faire cela? Quelqu'un pourrait-il m'aider?
Mon point de vue de la classe contrôleur:
class DayViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet var daysWorkPointTable: UITableView
override func viewDidLoad() {
super.viewDidLoad()
var nipName = UINib(nibName: "daysWorkPointsCell", bundle: nil)
self.daysWorkPointTable.registerNib(nipName, forCellReuseIdentifier: "daysWorkCell")
}
func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(tableView:UITableView!, heightForRowAtIndexPath indexPath:NSIndexPath) -> CGFloat {
return 75
}
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
var cell = tableView.dequeueReusableCellWithIdentifier("daysWorkCell", forIndexPath: indexPath) as daysWorkPointsCell
return cell
}
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
}
}
OriginalL'auteur Thiago Santiago | 2014-07-23
Vous devez vous connecter pour publier un commentaire.
D'abord, vous devez garder une trace de la indexPath de la cellule actuellement sélectionnée dans une propriété:
Il devrait être une option, parce que vous ne pouvez pas avoir de la cellule sélectionnée.
Suivant vous permet de déclarer les hauteurs sélectionnés et non sélectionnés état (modifier les valeurs de ce que vous voulez):
Maintenant que vous avez à mettre en œuvre
tableView(_:, heightForRowAtIndexPath:)
:Maintenant dans votre
tableView(_:, didSelectRowAtIndexPath:)
méthode, vous devez vérifier si la ligne sélectionnée ou désélectionnée ligne a été tapé:La
beginUpdates()
etendUpdates()
les appels sont donner vous une animation de changement de hauteur.Si vous souhaitez modifier la durée du changement de hauteur de l'animation, vous pouvez enrouler le
beginUpdates()
etendUpdates()
appels dans un bloc d'animationUIView.animationWithDuration(...)
et le régler à la valeur que vous souhaitez.Vous pouvez consulter cet exemple de projet qui illustre ce code dans l'action.
Je ne peux pas assigner une valeur à la selectedCellIndexPath cause dans la validation si elle est déclarée laisser, j'ai donc essayé de changer le laisser à var, mais continuer avec l'erreur car je ne peut pas affecter nul à un NSIndexPath. Pouvez-vous m'aider? Ce que je fais mal?
J'ai changé les missions explicitement attribuer à soi-même.selectedCellIndexPath. Il devrait fonctionner à présent, j'espère ;).
Merci man, il fonctionne parfaitement.
Très bien expliqué!
OriginalL'auteur Kai Engelhardt