2009-08-11 7 views
0

J'ai une belle table remplie de données, avec des dispositions de cellules personnalisées. Actuellement, en appuyant sur une cellule va pousser dans une nouvelle vue (pour plus d'informations, par exemple), ce qui fonctionne bien. Ce que je voudrais faire, cependant, est que la nouvelle vue pousse en les limites de la cellule, pas remplir tout l'écran. Je ne peux pas sembler envelopper mon cerveau autour de la façon d'accomplir ceci - des indications que vous pourriez offrir?Comment insérer une vue dans une cellule de table existante?

Merci! :)

Mise à jour: Voici une partie du code, en cas qui aide les aides:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

FlippedViewController *flippedViewController = [[FlippedViewController alloc] initWithNibName:@"FlippedView" bundle:nil]; 

// What goes in here? Where do contentView and originalView come from? 

[originalView removeFromSuperview]; 
[contentView addSubview:flippedViewController.view]; 

[flippedViewController release]; 
} 

Répondre

0

Vous pouvez ajouter un crochet dans tableView:didDeselectRowAtIndexPath: (une méthode de UITableViewDelegate) qui utilise un pointeur vers contentView de la cellule particulière , et effectue les changements sur ce UIView comme il le ferait tout autre.

Par exemple, si vous vouliez simplement remplacer originalView (en supposant que est ce qui est dans la cellule maintenant) avec newView, vous pouvez faire quelque chose comme ceci:

// Use your own data structure and indexPath to retrieve contentView. 
[originalView removeFromSuperview]; 
[contentView addSubview:newView]; 

Cela mettrait à jour la vue sans animation.

A propos de l'animation - voici deux questions précédentes connexes:

+0

D'accord, nous recevons quelque part, merci. Ours avec ma noviciat ici pendant une sec ... En ce moment, dans 'tableView: didSelectRowAtIndexPath:', j'ai ceci: '[self.navigationController pushViewController: self.editView animé: OUI];' Où Je découvre ce que mes analogues pour vos 'originalView',' contentView', et 'newView' sont? – Triz

+0

Chaque UITableViewCell a son propre UIView appelé contentView. Vous devez stocker une carte à partir de la ligne de la table # (et peut-être de la section #) vers la vue de contenu de sorte que vous puissiez regarder cela. En fonction de votre configuration, il se peut que vous n'ayez qu'un UIView visible en tant qu'enfant de contentView - ce serait votre vue d'origine. Et newView est ce que vous voulez montrer à sa place - en fonction de votre commentaire, il semble que vous vouliez que self.editView soit le remplaçant, en supposant qu'il s'agit d'un objet UIView. – Tyler

+0

J'ai travaillé dessus toute la nuit, et je suis encore un peu coincé, hélas. Je n'arrive pas à trouver comment référencer le 'contentView' de la cellule actuelle. J'ai la nouvelle vue configurée et prête à être ajoutée en tant que sous-vue, mais ... Je vais coller du code dans la question ci-dessus, voir si ça aide? Merci encore! – Triz

Questions connexes