UITableViewController et parsing
mozaique
Membre
Bonjour à tous,
depuis quelques jours je me bloque sur la récupération d'une variable que j'ai obtenue par parsing json et je souhaite l'utiliser vers une UITableViewController.
au niveau de controllerView qui la vue principale:
au niveau de homeViewController.m:
mais pour UITableViewCell:
Apres l'execution j'obtient:
je ne sais pourquoi ça genere une erreur malgrés dans l'affichage de NSLog j'ai la liste correcte.
Est ce que vous avez une idée SVP?
depuis quelques jours je me bloque sur la récupération d'une variable que j'ai obtenue par parsing json et je souhaite l'utiliser vers une UITableViewController.
au niveau de controllerView qui la vue principale:
<br />
homeViewController *home= [[homeViewController alloc] initWithNibName:@"homeViewController" bundle:[NSBundle mainBundle]];//tableviewController<br />
home.userID=[NSString stringWithFormat:@"%@", [parserResults objectForKey:@"id"]];//userID que j'ai identifié au niveau de homeviewController.h<br />
NSLog(@"user id for home:%@",home.userID);<br />
[self presentModalViewController:home animated:YES];<br />
au niveau de homeViewController.m:
<br />
- (void)viewDidLoad<br />
{<br />
<br />
maListe = [[NSMutableArray alloc] init];<br />
NSString* iduser=[[NSString alloc]init];<br />
<br />
NSString *application=@"monurl&&id=";<br />
NSLog(@"home");<br />
iduser=_userID;<br />
NSLog(@"userid:%@",iduser);//j'ai recuperer le bon userID<br />
NSString *chaine3;<br />
chaine3 = [NSString stringWithFormat:@"%@%@",application,iduser];<br />
//NSURL *url = [NSURL URLWithString: chaine3];<br />
NSLog(@"url application:%@",chaine3);//le bon URL<br />
<br />
SBJsonParser *parser = [[SBJsonParser alloc] init];<br />
<br />
<br />
NSURLRequest *request = [NSURLRequest requestWithURL: [NSURL URLWithString:<br />
chaine3]];<br />
<br />
NSData *response = [NSURLConnection<br />
sendSynchronousRequest:request<br />
returningResponse:nil error:nil];<br />
<br />
NSString *json_string = [[NSString alloc]initWithData:response encoding:NSUTF8StringEncoding];<br />
<br />
<br />
NSArray *app = [parser objectWithString:json_string error:nil];<br />
<br />
NSLog(@"count = %d", [app count]);<br />
<br />
[maListe addObjectsFromArray:app];<br />
NSLog(@"la liste:%@",maListe);//j'ai recupere la bonne liste<br />
NSLog(@"%d",[maListe count]);<br />
[super viewDidLoad];<br />
<br />
}<br />
mais pour UITableViewCell:
<br />
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath<br />
{<br />
<br />
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"]; <br />
NSString *cellValue = [NSString stringWithFormat:@"%@", [[maListe objectAtIndex:indexPath.row] objectForKey:@"ApplicationName"]];<br />
NSString *cellV = [[[maListe objectAtIndex:indexPath.row] objectForKey:@"build"]objectForKey:@"BuildName" ];<br />
NSString *image=[[maListe objectAtIndex:indexPath.row] objectForKey:@"pathIcon"];<br />
NSString *URLim=[NSString stringWithFormat:@"%@%@",@"http://",image];<br />
NSURL *uneImage = [NSURL URLWithString: URLim];<br />
UIImage *img = [UIImage imageWithData: [NSData dataWithContentsOfURL: uneImage]];<br />
cell.textLabel.text=cellValue;<br />
cell.detailTextLabel.text=cellV;<br />
cell.imageView.image = img;<br />
return cell;<br />
<br />
}<br />
Apres l'execution j'obtient:
<br />
Assertion failure in -[UITableView _createPreparedCellForGlobalRow:withIndexPath:], /SourceCache/UIKit_Sim/UIKit-1914.84/UITableView.m:6061<br />
2012-05-21 14:12:38.059 jihedBetaappli[3792:f803] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath:'<br />
je ne sais pourquoi ça genere une erreur malgrés dans l'affichage de NSLog j'ai la liste correcte.
Est ce que vous avez une idée SVP?
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Qu'avez-vous mis dans les méthodes
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section ?
Avez-vous lié le datasource et le delegate ?
au niveau de UITableViewCell
if (cell == nil){
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@MyIdentifier] autorelease];
}
après :
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@MyIdentifier];
En gros, tu veux ré-utiliser une cellule que tu n'as jamais instanciée auparavant !
ça marche mais au niveau des cellules j'ai perdu la liason vers une autre tableview qui est la liste des versions de chaque application ainsi que UINavigationcontroller!!
Tu veux, après un clic sur une cellule, pousser ton UINavigationController vers un autre contrôleur qui contient une autre tableView ?
j'ai recupere toute les infos et je les ai mis dans une autre tableView.Mais avec l'utilisation de l'id de l'utilisateur que j'ai recupere et que je l'ai parsé pour avoir ces applications ça degenere
merci pour vos aide, j'ai bien compris le principe que Kixxx m'a indiqué. puisque je suis novice dans la matiere il quelques notions à revoir .
Merci en tt cas de m'avoir repondu
Sauf que le monsieur il utilise les Storyboards (je t'accorde que tu ne pouvais pas le savoir au moment où tu as répondu), et que quand on utilise les storyboards il n'est pas nécessaire d'instancier les cellules de tableviews, le framework le fait automatiquement.
Par contre, il faut bien s'assurer que dans le storyboard la cellule "modèle" est bien nommée "MyIdentifier".
je n'utilise plus les Stroryboards.Merci à tous[font=helvetica, arial, sans-serif] [/font]
tout fonctionne sauf la derniere View pour les details: je les creer en utilisant le storyboard avec tous une image de fond .....
mais quand je sais la cellule elle me l'affiche toute blanche ni les labels, ...
viewDidLoad de DetailViewController
est ce que vous avez une idée SVP?Merci
Ah je ne savais pas, je n'ai encore jamais utilisé storyboard, faudrait que je m'y mette au plus vite ^^ !
En tout cas, merci pour le tuyau !
Là malheureusement tu fais au petit bonheur la chance, un coup du storyboard, une autre fois sans. Tu as un gros travail de lecture de doc à faire. Si tu utilises Storyboard tu as la doc qui va bien et qui explique comment instancier un view controller (avec ou sans segue).
Tu devrai même trouver des indications dans ce forum ; j'en ai pas mal parlé.