0 votes

Afficher NSMutableArray dans une cellule de la vue tableau

Comment afficher un tableau de données dans une cellule de tableau ? Je veux que le texte de l'étiquette de la cellule de la vue tableau soit le 'ename' des données analysées. Veuillez m'aider.

Merci d'avance.

- (void)viewDidLoad {

    NSString *url = [NSString stringWithFormat:@"http://mmabigshow.com/app/get_result_from_query.php?q=select * from event"];

    NSString *escapedUrl = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

    [self performSelector:@selector(startParsing:) withObject:escapedUrl afterDelay:1.0];

    NSLog(@"View Did Load End");*/
     [super viewDidLoad];

}
- (void) startParsing: (NSString *) query{

    NSLog(@"Start Of Parsing");
    NSURL *xmlURL = [[NSURL alloc] initWithString:query];
    NSData *myData = [NSData dataWithContentsOfURL:xmlURL];
    NSString *myStr = [[NSString alloc] initWithData:myData encoding:NSWindowsCP1252StringEncoding];
    myStr = [myStr stringByReplacingOccurrencesOfString:@"encoding=\"windows-1252\"" withString:@""];
    NSData* aData = [myStr dataUsingEncoding:NSUTF8StringEncoding];

    rssParser = [[NSXMLParser alloc] initWithData:aData];
    [rssParser setDelegate:self];
    [rssParser setShouldProcessNamespaces:NO];
    [rssParser setShouldReportNamespacePrefixes:NO];
    [rssParser setShouldResolveExternalEntities:NO];    
    [rssParser parse];
    NSLog(@"End of Parsing");

}

#pragma mark xml parser
#pragma mark -

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{            
    currentElement = [elementName copy];
    if ([elementName isEqualToString:@"table"]){
    item = [[NSMutableDictionary alloc] init];
    currentEid = [[NSMutableString alloc] init];
    currentEname = [[NSMutableString alloc] init];
    currentEurl = [[NSMutableString alloc] init];
    dataArray = [[NSMutableArray alloc] init];
    }
    //NSLog(@"didStartElement");
    }

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{     

    if ([elementName isEqualToString:@"table"]) {
        // save values to an item, then store that item into the array...
        [item setObject:currentEname forKey:@"ename"];
        //NSLog(@"%@",item);
        [dataArray addObject:[[item copy] autorelease]];
        //NSLog(@"%@",dataArray);
        }
    [currentEid release];
    [currentEname release];
    [currentEurl release];

}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
    if ([currentElement isEqualToString:@"eid"]) {
        [currentEid appendString:string];
    } else if ([currentElement isEqualToString:@"ename"]) {
        [currentEname appendString:string];
        //NSLog(@"%@",currentEname);
    } else if ([currentElement isEqualToString:@"eurl"]) {
        [currentEurl appendString:string];
    } 
    //  NSLog(@"foundCharacters");
}

#pragma mark - 
#pragma mark Table Data Source Methods 
- (NSInteger)tableView:(UITableView *)tableView 
 numberOfRowsInSection:(NSInteger)section { 
    NSLog(@"numberOfRowsInSection");

    return [self.dataArray count]; 

}
- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSLog(@"cellForRowAtIndexPath");
    static NSString *CustomCellIdentifier = @"CustomCellIdentifier "; 

    TableDetailsCell *cell = (TableDetailsCell *)[tableView dequeueReusableCellWithIdentifier: CustomCellIdentifier]; 
    if (cell == nil) { 
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TableDetailsCell" owner:self options:nil]; 
        for (id oneObject in nib) 
            if ([oneObject isKindOfClass:[TableDetailsCell class]]) 
                cell = (TableDetailsCell *)oneObject; 
    } 
    NSUInteger row = [indexPath row]; 

    NSDictionary *rowData = [self.dataArray objectAtIndex:row]; 
    //NSLog(@"%@",rowData);

    cell.text = [rowData objectForKey:@"ename"]; 
    cell.labelName.text= [rowData objectForKey:@"ename"];

    return cell; 
}

2voto

Seb Kade Points 797

Je pense que votre problème est que vous ne faites pas toujours référence à dataArray comme self.dataArray, ce qui peut empêcher votre programme de fonctionner correctement.

Attribuez ensuite via

cell.textLabel.text = [self.dataArray objectAtIndex:indexRow.row];

J'espère que cela vous a aidé

Seb Kade "Je suis ici pour aider"

0voto

hamena314 Points 88

Apple Application SeismicXML fait exactement cela. Regardez le cellForRowAtIndexPath du rootViewController.

Vérifiez également que le délégué et la source de données de votre tableview sont correctement définis dans Interface Builder (si vous avez choisi de l'utiliser).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X