D'accord, je suis maintenant bloqué pendant environ 3 heures et lire tous les autres fils ici et ce que je pouvais trouver sur Google et a fait beaucoup de trialAndError, mais il n'a pas aidé. Notez que je suis un débutant avec Objective C et Cocoa Touch.UITableView redessiner
J'ai une sous-classe UITableViewConroller. Je veux être en mesure d'ajouter des cellules par programme. Je substitue les méthodes suivantes:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
SectionInfo *obj = nil;
obj = [dataSourceMutableArray objectAtIndex:section];
return [obj GetNumberOfCells];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return [dataSourceMutableArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = nil;
CellInfo *cellInfo = nil;
SectionInfo *si = [dataSourceMutableArray objectAtIndex:indexPath.section];
cellInfo = [si.cellInfos objectAtIndex:indexPath.row];
cellInfo.mypath = indexPath;
cell = cellInfo.cell;
return cell;
}
Les objets CellInfo et SectionInfo sont simplement des wrappers. Un sectionInfo contient un tableau d'objet CellInfo, qui contient à nouveau la cellule. La vue est dessinée comme prévu, quelles que soient les sections et les cellules initialisées.
Quand je plus tard ajouter une cellule à une section, et appelle [tableViewController.tableView reloadData] ;, rien ne se passe. Définir un point d'arrêt dans "cellForRowAtIndexPath" et "numberOfRowsInSection" me montre que "cellForRowAtIndexPath" est appelé lorsque je fais glisser la vue de la table hors de vue, mais "numberOfRowsInSection" ne sera jamais appelé à nouveau. Cela pourrait-il être le problème?
J'ai aussi essayé des trucs comme ça:
NSArray* a = [NSArray arrayWithObjects: [NSIndexPath indexPathForRow:2 inSection:0], [NSIndexPath indexPathForRow:3 inSection:0], [NSIndexPath indexPathForRow:2 inSection:1], [NSIndexPath indexPathForRow:3 inSection:1], nil];
[tableViewController.tableView insertRowsAtIndexPaths:a withRowAnimation:UITableViewRowAnimationNone];
aussi n'a pas déclenché les points d'arrêt. Si vous avez besoin de plus d'informations s'il vous plaît faites le moi savoir. J'espère que je suis juste aveugle et vous pouvez repérer l'erreur.
Ou existe-t-il une autre façon de définir la source de données sur tableView qui remplace ces méthodes et renvoie les valeurs dont elle a besoin? – Akku
Hm, je viens de trouver le membre tableView.dataSource ... la classe 'NSMutableArray' n'implémente pas le protocole 'UITableViewDataSource' ... l'implémentation de ce protocole est-elle une possibilité d'actualiser la vue quand je change la source de données par code? – Akku