2010-07-05 6 views

Répondre

5

J'avais une exigence similaire: Faire défiler horizontalement les tables dans les cellules d'une table normale à défilement vertical.

Ma solution: J'ai mis un UIiew standard dans la cellule de la table externe. Cette vue avait sa propriété de transformation réglée pour tourner de 90 °, servant de "charnière", tournant son contenu sur le côté.

Dans la vue de charnière était un autre UITableView. Comme il est contenu dans la vue retournée, il apparaît horizontalement sur l'écran. Les cellules de cette table intérieure contenaient une autre vue de charnière, tournant leur contenu -90 °, de nouveau à l'orientation verticale.

Cela peut sembler un peu déroutant, mais cela vous donne tous les avantages des vues de table, en orientation horizontale. C'est moins déroutant si vous omettez la vue de la table externe avec leurs cellules qui ne sont pas nécessaires dans votre cas.

Edit: pour répondre commentaire

Performance était vraiment grande. En fait, la performance était la raison principale pour passer à cette approche. Les vues de table sont particulièrement utiles pour afficher des ensembles de données volumineux, car elles n'instancent que les vues visibles (cellules) et les réutilisent après avoir été déroulées. En soi, une vue de table est assez léger et très optimisé pour son usage. Mes ensembles de données où la taille moyenne, je dirais (environ 100 articles dans les deux dimensions) et le défilement était parfaitement lisse. L'autre chose que la performance qui m'intéressait, c'était la manipulation tactile. Il est sorti que les vues de table (qui dérivent des vues de défilement) ont toujours détecté le geste correctement (faire défiler une vue de défilement dans une vue de défilement n'est pas facile à obtenir correctement). Si vous avez balayé verticalement la vue de la table externe gérerait les événements, si vous avez balayé horizontalement la table interne obtient tous les événements. J'ai été très impressionné de la façon dont le cadre a géré cette situation non standard.

+0

Donc, vous aviez une Table verticale et chaque cellule de cette table avait un tableau déroulant horizintal? Est-ce que cela fonctionne bien? J'ai besoin de plus d'une table horizontale et j'ai pensé à utiliser un UIScrollView et mettre ces tables horizontales dessus, mais votre apparence semble vraiment intéressante, si elle fonctionne bien. Combien de données didi vous présentez? Merci twickl – CaptnCrash

+0

Nikolai, J'essaie de recréer cet effet comme vous l'avez décrit mais en ayant des difficultés, pourriez-vous coller un exemple du code? – bodacious