Voici un petit projet parallèle sur lequel je travaille pour m'amuser.
Je commence en initialisant avecL'application iPhone se bloque en comparant cell.textlabel.text à une chaîne
- (void)viewDidLoad {
[super viewDidLoad];
rootArray = [[NSMutableArray alloc] initWithObjects:@"Earth",@"Mars",@"Pluto",nil];
moonArray = [[NSMutableArray alloc] initWithObjects:@"Clavius",@"Galileo",@"Ptolamy",nil];
marsArray = [[NSMutableArray alloc] initWithObjects:@"Phobos",@"Delmos",nil];
plutoArray = [[NSMutableArray alloc] initWithObjects:@"Charon",@"Nix",@"Hydra",nil];
self.planetList = rootArray
Je viens de faire 5 tableaux, avec l'initialisation planetList rootArray. De là, je souhaite utiliser ces tableaux suivants pour créer des vues de table. planetList sera la liste principale lorsque l'application démarre, et les 3 autres seront les tableaux appelés pour les vues suivantes. Donc, j'ai alors ce morceau de code pour gérer cet événement:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
MoonViewController *myMoonViews = [[MoonViewController alloc] initWithNibName:@"MoonViewController" bundle:nil];
UITableViewCell *targetCell = [tableView cellForRowAtIndexPath:indexPath];
if([targetCell.textLabel.text isEqualToString:@"Earth"])
{
myMoonViews.planetList = moonArray;
myMoonViews.title = @"First Title";
}
else if([targetCell.textLabel.text isEqualToString:@"Mars"])
{
myMoonViews.planetList = marsArray;
myMoonViews.title = @"Second Title";
}
else if([targetCell.textLabel.text isEqualToString:@"Pluto"])
{
myMoonViews.planetList = plutoArray;
myMoonViews.title = @"Third Title";
}
// ...
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:myMoonViews animated:YES];
[myMoonViews release];
}
J'ai un autre fichier la vue suivante, MoonViewController, qui utilise le même code de mon ViewController d'origine (qui fonctionne très bien). Cependant je ne sais pas où je vais mal.
Notes secondaires:
- planetList est un NSMutableArray
- Je ne sais pas quoi mettre dans la viewDidLoad de mon MoonViewController.m (Si cela est un problème géant, je n'ai pas dit que quand j'étais enseigné cela.)
- S'il y a plus de code nécessaire pour être vu, je vais fournir.
Merci beaucoup pour toute aide!
EDIT1: Désolé, je devrais vraiment avoir pensé à mettre cela. L'erreur est une cette ligne du deuxième bloc de code:
if([targetCell.textLabel.text isEqualToString:@"Earth"])
EDIT2: Les fonctions MoonViewController.m:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return planetList.count;
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
// Configure the cell.
cell.textLabel.text = [planetList objectAtIndex: indexPath.row];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
return cell;
}
Essayez de poster la trace indiquant exactement où le problème se produit – Jacques
Ajouté dans une modification. – Inanepenguin
Quel genre d'accident voyez-vous? Je voudrais également souligner qu'il est beaucoup plus polyvalent de comparer la section et la ligne d'indexPath au lieu du contenu de l'étiquette, car dans une application d'expédition, vous allez avoir des étiquettes localisées ou même configurables par l'utilisateur. – Costique