2009-11-09 6 views
1

J'ai une application basée sur la vue qui navigue entre toutes les vues correctement. Et maintenant je dois ajouter un UITableView à cette application, je suis incapable de le faire.comment ajouter UITableView à une application basée sur la vue: iPhone sdk question

Je pourrais ajouter un UITableView, c'est bien, mais aucune idée sur l'ajout de la source de données. J'ai beaucoup cherché et trouvé que des exemples commencent par des applications basées sur la navigation. J'ai créé le tableau et j'ai également affiché une vue de tableau vide. Comment ajouter ajouter du contenu aux cellules de tableau, dois-je remplacer ces méthodes dans les applications de navigation?

J'ai un UITableView sur un UIView comme:

UITableView * aTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)]; 
    mainView = aTableView; 

Est-il possible, une idée? Merci.

EDIT:

mainView = aTableView; 

est modifié comme

[mainView addSubview:aTableView]; 

Répondre

2

Vous venez de définir la propriété DataSource:

UITableView * aTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)]; 
aTableView.dataSource = aDataSource; 

Notez que vous ne pouvez pas mettre MainView à votre tableView et attendez-vous à ce que cela fonctionne. mainView est une ivar ou une variable locale représentant une vue, la changer change juste l'ivar, elle n'attache ou ne détache aucune vue dans la hiérarchie de vue. Pour ce faire, vous devez l'attacher en utilisant -[UIView addSubview:].

+0

Je définis une source de données que j'ai déjà et qui n'apparaît pas dans la table sous forme de cellules de tableau. Y a-t-il une méthode que je devrais remplacer? merci – pMan

+0

C'est probablement le deuxième problème que j'ai mentionné, vous n'ajoutez pas la vue de table dans la hiérarchie de vue. Le simple réglage de l'ivar ne le fera pas, vous devez l'ajouter en sous-vue. –

+0

oui, je l'ai fait (ajouté comme subview), mais je ne reçois rien dans les cellules. – pMan

2

Avez-vous ajouté UITableViewDelegate et UITableViewDataSource dans le fichier d'en-tête (fichier .h) de ce contrôleur ..

Par exemple,

@interface MainViewController : UIViewController < UIITableViewDelegate, 
UITableViewDataSource > 
{ 

} @end 

Après avoir fait cela .. Dans le fichier .m,

UITableView * aTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)]; aTableView.dataSource = self; aTableView.delegate = self; [mainView addSubView:aTableView]; 
+0

Sauf si vous faites une mise en page composite, il est préférable de faire descendre la classe MainViewController de UITableViewController, puis d'utiliser - [UITableViewController initWithStyle:] au lieu de - [UIView initWithFrame:] –

0

Et vous devez ajouter l'UITableView à un UINavigationController et ajouter l'affichage de la NavigationController à votre vue. Que vous pouvez utiliser

[self.navigationController pushViewController:<Your DetailViewController> animated:YES] 

Si vous ne le faites pas, vous aurez beaucoup de travail pour montrer votre DetailViewController. ;-)

0

En plus de référencer la source et déléguer dans l'en-tête, vous pouvez connecter votre source de données et déléguer à votre 'propriétaire du fichier' (en utilisant l'inspecteur de connexions) pendant que vous modifiez votre XIB (au lieu de code).

Questions connexes