UITableView: définir par programmation de la source de données
Dans mon iPhone j'ai un UIViewController qui a un UITableView et un autre UIView, dans son fichier xib, le point de vue de la xib contient à la fois la UITableView et les autres UIView. Deux sont liés comme IBOutlets à la les vues appropriées dans le fichier xib.
Quand je veux mettre la source de données par programmation pour la UITableView j'ai créer une méthode de ce genre dans la UIViewController:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil tableDataSource:(id)dataSource{
if ((self = [self initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
//Custom initialization
self.inventoryTableView.dataSource = dataSource;
//[self.inventoryTableView reloadData];
}
return self;}
puis-je mettre en œuvre les méthodes suivantes dans une autre classe de la mienne, nous allons l'appeler B:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
Enfin je alloc+init B et de passer à l'instance de la méthode initWithNibName:bundle:tableDataSource:
de la création de la UIViewController. Tous les points de vue apparaissent dans le simulateur, mais la source de données méthodes ne semblent pas être appelé.
- Je faire quelque chose de similaire avec un autre contrôleur et des œuvres, mais c'est un UITableViewController et de la TableView est le contrôleur de la vue. Est-il possible que le fait d'être une sous-vue-je définir la source de données dans une autre méthode différente de la initWithNib?
Mise à JOUR:
En mettant la source de données assignation dans le viewDidLoad:
méthode, j'ai été en mesure de le résoudre. Il me semble que même après l'appel de [self initWithNibName:nibNameOrNil bundle:nibBundleOrNil]
les sous-vues de la vue principale ne sont pas correctement inited
OriginalL'auteur rano | 2010-07-30
Vous devez vous connecter pour publier un commentaire.
Prendre un coup d'oeil à cette réponse, je pense que c'est similaire à ce que vous proposez avec l'aide de "B" comme la source de données externe pour le contrôleur.
Moyen Simple pour séparer UITableview source de données et le délégué principal de la classe UIViewController?
Je réussis à le résoudre par la définition de la source de données dans la
viewDidLoad:
méthode. Mais encore, je ne comprends pas pourquoi ça marche pour les autres classeOriginalL'auteur chilitechno.com
Comme indiqué dans la mise à jour et dans un commentaire, je l'ai résolu en changeant de définir le délégué/source de données, car il était nécessaire d'attendre la tableView à répartir et inited. Il m'apparaît que comme une sous-vue, il est attribué/inited au plus tard à l'affichage principal de la classe
OriginalL'auteur rano