2012-11-09 3 views
2

J'ai eu des problèmes avec ce problème pendant des jours, donc j'espère que quelqu'un peut m'aider ... J'ai un UITableView groupé avec plusieurs cellules. Je veux dessiner des graphiques personnalisés au-dessus de UITableView qui défileraient avec le contenu de la table. Plus précisément, je veux tracer une ligne avec des points, rejoignant les UITableViewCells (à travers les sections) comme ceci:
Screenshot http://i46.tinypic.com/21dpwmd.gifCalque de dessin personnalisé sur UITableView

Bien sûr, si nous avons plus de cellules que ce que l'écran est capable d'afficher, la couche supérieure à la le dessin personnalisé doit se déplacer avec les cellules sous-jacentes. J'ai essayé de sous-classer UITableView et de surcharger sa méthode -drawRect, mais cela n'a pas fonctionné. Même si je n'appelle pas [super drawRect: rect], le contenu de la table s'affiche sans problème. J'ai essayé d'ajouter une nouvelle sous-vue à UITableView, mais elle change sa taille dynamiquement quand elle obtient les cellules et les sections de sa source de données ... Je n'ai plus d'idées ...

Bien que le Web soit plein d'échantillons personnalisés UITableViewCell, je n'ai pas réussi à trouver quelque chose de similaire à mon concept ...

Quelqu'un peut-il m'aider à réaliser la fonctionnalité mentionnée ci-dessus?

Répondre

0

Tout d'abord votre sous-classe UITableView. Ensuite, créez un autre UIView et ajoutez-le en tant que subview de votre UITableVIew personnalisé.

Ensuite, remplacez la propriété contentOffset de UITableView.

-(void)setContentOffset:(CGPoint)contentOffset 
{ 

    [super setContentOffset:contentOffset]; 

    // Custom code here. Update custom subview here. 
} 

Cette méthode sera appelée lorsque l'UITableView défile. Vous pouvez ensuite ajuster le décalage de votre sous-vue et mettre à jour son dessin.

+0

Etes-vous sûr que ce ne sont pas une façon plus pratique de le faire? Si je pouvais placer la couche de dessin au-dessus du contenu de défilement, l'UITableView (qui est un UIScrollView) ferait automatiquement le défilement et je dessinerais seulement des graphiques statiques avec un cadre fixe dans le système de coordonnées de UIScrollView. Quelque chose comme ceci: http://i45.tinypic.com/122owef.jpg (le cadre rouge est l'écran) –

+0

Le problème que vous rencontrerez est que les cellules qui ne sont pas en vue n'existent pas réellement. Le UITableView rend seulement ce qui est actuellement en vue. Il est donc préférable de déterminer dynamiquement ce qui est actuellement en vue et d'ajuster ce que vous dessinez en fonction du contentOffset actuel de UITableView. – CodeBySteveZ

+0

Oui, le comportement de chargement paresseux de UITableView rend ces choses problématiques ... Je dois considérer les cellules qui ne sont pas affichées, parce que je dois continuer la ligne jusqu'au bord de l'écran s'il y a plus de cellules hors de vue . Peut-être que je vais mettre en œuvre une vue personnalisée pour cette fonctionnalité. Quoi qu'il en soit, je vais accepter votre solution, car elle est raisonnable, mais je pense que nous avons atteint un point où il faudrait moins d'efforts pour implémenter une vue personnalisée. –

Questions connexes