2010-05-30 5 views
1

J'ai essayé d'afficher mon NSMutableArray dans une vue de table en suivant un tutoriel. Il a completley échoué pour une raison quelconque, je pense avoir une bonne idée pourquoi mais ne peut pas contourner, voici mon code:IPhone SDK, Afficher un tableau NSMutable dans la vue Tableau?

- (void) scoreSystem { 
scoreArray = [[NSMutableArray alloc] init]; 
NSNumber *onescore = [NSNumber numberWithInteger:score]; 
[scoreArray addObject:onescore]; 
NSNumber *twoscore = [NSNumber numberWithInteger:score]; 
[scoreArray addObject:twoscore]; 
NSNumber *threescore = [NSNumber numberWithInteger:score]; 
[scoreArray addObject:threescore]; 
NSNumber *fourscore = [NSNumber numberWithInteger:score]; 
[scoreArray addObject:fourscore]; 
NSNumber *fivescore = [NSNumber numberWithInteger:score]; 
[scoreArray addObject:fivescore]; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
return [scoreArray count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath { 

static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];  
} 
cell.textLabel.text = [scoreArray objectAtIndex:indexPath.row]; 

return cell; 
} 

Je pense qu'il est parce qu'il ne me laissera pas lier tout ce correctement dans IB, il me laisse mettre la source de données et déléguer au propriétaire de fichiers, mais quand je fais glisser du propriétaire de fichiers à ma vue il indique «délégué» au lieu de «vue», je pense que c'est parce que je le fais dans la fenêtre principale 'pas VC. Y a-t-il un moyen de contourner cela? Merci! harry.

+0

est-scoreSystem appelé à viewDidLoad? Essayez 'scoreArray = [[[NSMutableArray alloc] init] conserver];' – DyingCactus

+1

D'accord, essayez cela. Merci! – Harry

+1

S'il vous plaît ne pas essayer cela. alloc/init conservera le tableau, l'extra retenue provoquera une fuite. –

Répondre

0

Vous souhaitez définir la classe dans laquelle votre code est en tant que source de données de tableview. Créez une instance de votre classe dans IB (utilisez NSObject et renommez sa classe en YourClass).

Cela créera une instance de votre classe qui sera disponible lorsque la pointe sera décodée. Ensuite, faites glisser le contrôle depuis la vue de table vers votre classe et définissez la source de données.

C'est tout! Vous devriez être en mesure de définir des points d'arrêt dans votre méthode -numberOfRowsInSection: ci-dessus, et de la voir appelée dès que la vue table est affichée. Si ce n'est pas le cas, vérifiez vos connexions et vérifiez les fautes de frappe: le temps d'exécution est sensible à la casse.

0

Eh bien pour une raison quelconque, quelqu'un a heurté ce vieux fil. Je pourrais aussi bien intervenir. La raison pour laquelle ce code a des problèmes est qu'il essaie de définir la propriété text de la cellule à NSNumber.

cell.textLabel.text = [scoreArray objectAtIndex:indexPath.row]; 

Essayez ceci:

cell.textLabel.text = [[scoreArray objectAtIndex:indexPath.row] stringValue]; 
Questions connexes