2010-05-15 3 views
0

J'ai un UITableView dans iPhone avec suffisamment de cellules pour le faire défiler. Je voudrais avoir un affichage de sous-vue chaque fois que je clique sur une cellule, plutôt que d'utiliser le comportement du contrôleur de navigation. Le problème est que je ne peux pas calculer le CGRect exactement pour avoir la sous-vue toujours centrée dans la page, parce que le CGRect est calculé du haut de la table, et si je défile la table et clique sur la cellule, la sous-vue sera ajoutée . La solution pourrait être facile, mais je ne sais pas si c'est possible: identifier la partie de la zone visible de l'UITableView et obtenir d'une certaine manière le cadre et donc l'origine et la taille, puis construire une sous-vue basée sur ces coordonnées. Pensez-vous que ce soit possible sans écrire trop de code?UITableAfficher les détails en tant que sous-vue

grâce Leonardo

+0

Pouvez-vous expliquer pourquoi vous ne voulez pas utiliser un contrôleur de navigation/exactement ce que vous voulez arriver (comme si le sous-vue de couvrir la tableview entière, écran, cellule, cellules multiples)? –

+0

Je sais que le moyen le plus simple et le plus simple est d'utiliser un contrôleur de navigation. Mais visuellement, avoir un affichage des détails semi-transparent sur le dessus de la table, semble plus agréable. Et aussi, j'aime faire une sorte d'expérience :-) – Leonardo

Répondre

1

Une solution simple est de ne pas ajouter votre sous vue comme une sous-vue de la UITableView mais de son parent (ou la fenêtre principale de l'application). Ainsi, au lieu de faire quelque chose comme:

[myTableView addSubview:mySubView]; 

faire:

[[myTableView superview] addSubview:mySubView]; 
+0

Uhm, semble que UITableView ne répond pas au parent, donc l'application plantage. – Leonardo

+0

apparemment semble que j'ai résolu, je l'utilise, au lieu d'utiliser 'parent': [myTableView.superview addSubview: mySubView] – Leonardo

+0

Désolé, c'était une faute de frappe - moi d'être stupide. Je voulais dire superview, comme vous l'avez dit correctement – pheelicks