2014-06-27 2 views
0

J'ai UITableView en ce que je chargeais des photos avec des commentaires ..Comment appeler ScrollViewDidScroll méthode déléguée de UITableView dans l'IOS

Je défilement horizontal d'images dans chaque ligne et le défilement vertical de photos des utilisateurs horizontalement avec des commentaires.

Je souhaite mettre à jour la cellule unique lorsque l'utilisateur a commenté la photo.

A scrollviewDidScroll méthode J'ai un code pour mettre à jour dynamiquement la hauteur de UITableviewCell et afficher les commentaires. Comme mon exigence est dynamiquement augmenter la hauteur de la cellule personnalisée par rapport aux commentaires de la photo défilée. J'affiche les trois derniers commentaires dans la cellule. Il devrait mis à jour dynamiquement la hauteur en fonction de 0 ou 1 ou 2 ou 3 commentaires de cette photo ..

Alors, je l'ai essayé avec ci-dessous code..For la mise à jour de la ligne unique ..

[self.photosTable beginUpdates]; 
[self.photosTable reloadRowsAtIndexPaths:[self.photosTable indexPathsForVisibleRows] withRowAnimation:UITableViewRowAnimationAutomatic]; 

[self.photosTable endUpdates]; 

[self scrollViewDidScroll:self.photosTable];//As UITableView is sub class of UIScrollview I wrote like that 

Mais scrollviewDidScroll n'appelle pas. Si je fais défiler la table alors seulement qu'il appelle ..

S'il vous plaît suggérer les idées où je suis allé mal ..

Merci à l'avance ..

+1

Je ne recommanderais pas d'appeler des méthodes de délégué vous-même. –

+1

Vous pouvez déplacer le corps si 'scrollViewDidScroll:' dans une de vos méthodes, et l'appeler de 'scrollViewDidScroll:' et de l'extrait de code que vous avez collé ci-dessus. Cependant, je crois que votre problème est avec quelque chose d'autre. – Levi

Répondre

2

scrollviewDidScroll est une méthode déléguée qui est automatiquement appelée lorsque le UITableView est défilé.

Si vous voulez faire défiler la UITableView, essayer d'utiliser ce code:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:n inSection:0]; 
    [self.tableView scrollToRowAtIndexPath:indexPath 
        atScrollPosition:UITableViewScrollPositionTop 
          animated:YES]; 
+1

Cela ferait défiler la vue table à la cellule souhaitée, mais si vous lisez les docs sur cette méthode, ils disent: "L'appel de cette méthode n'entraîne pas le délégué à recevoir un message scrollViewDidScroll:, normal pour les opérations d'interface utilisateur invoquées par programme " –

1

Comme d'autres l'ont souligné, vous ne devriez pas appeler vos propres méthodes de délégué. Ceci ressemble à un XY problem. Prenez un peu de recul et expliquez ce que vous essayez d'accomplir ici. Pourquoi avez-vous besoin de votre méthode scrollviewDidScroll pour être appelée?

Questions connexes