2011-12-06 1 views
0

Je travaille avec UITableView à UIViewController..I am en utilisant les méthodes de délégué suivantes .....Appel uitable Voir délégué Méthode

-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

Une fois que je charge la vue que je trouve tous les délégués a été appelé. .... mais je dois appeler ces méthodes dans un bouton clic .....
J'ai essayé de cette façon ....

[self tableView:table numberOfRowsInSection:rows]; 
[self tableView:table cellForRowAtIndexPath:path]; 

Je trouve que ces méthodes a été appelé, mais rien ne se passe (code à l'intérieur de ces délégués ne fonctionne pas) .... Je ne sais pas pourquoi ??? Aucune suggestion???

+0

Vous n'êtes pas censé appeler ces méthodes déléguées directement, vous les implémentez pour que la vue de table puisse les appeler pour demander les informations dont elles ont besoin pour s'afficher. S'il vous plaît définir ce qui "ne fonctionne pas" - que ne voyez-vous pas que vous vous attendez à voir? – jrturton

Répondre

0

Ecrire le code de la touche fonction de clic, il appellera tous les délégués du tableview

[self.tableView reloadData]; 

ou un code complet à votre solution est: -

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


    static NSString *CellIdentifier = @"Cell"; 

    customCell *cell = [[customCell alloc]init]; 
    if (cell == nil) { 
     cell = [[[customCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    // Configure the cell 
    cell.selectionStyle = UITableViewCellSelectionStyleBlue; 


    NSArray *topLevelObjects=[[NSBundle mainBundle] loadNibNamed:@"customCell" owner:self options:nil]; 
    cell = (customCell *)[topLevelObjects objectAtIndex:0]; 


    int count=0; 
    for(id currentObject in topLevelObjects) 
    { 
     count++; 
     if([currentObject isKindOfClass:[customCell class]]) 
     { 

      cell= (customCell *)currentObject; 

      UILabel *sName = (UILabel *)[cell.contentView viewWithTag:1]; 

      //Checking the flag that is set in the btnClicked event 
      if (flag) { 
        sName.hidden=YES; 
       } 

       else{ 
       sName.text = [arrayResult objectAtIndex:indexPath.row];    
       } 

     } 
    } 

    return cell; 
    [topLevelObjects release]; 
    [cell release]; 

} 

-(IBAction) btnClicked:(id) sender{ 
flag=YES; 
[self.tableView reloadData]; 
} 

Essayez cela, il fonctionnera.

+0

Merci, ça marche bien – Icoder

+0

Encore une requête ... A l'intérieur de chaque cellule de la table J'ai une étiquette .. Lorsque je recharge la table, toutes les étiquettes ne sont pas enlevées ... Hw puis-je enlever toute l'étiquette à l'intérieur cliquez sur – Icoder

+0

Je pense que vous avez une cellule personnalisée ... avant de recharger la table, appliquez un drapeau booléen = YES; et à l'intérieur de votre cellAtRowAtIndexPath délégué de la uitableview vérifier le drapeau si oui cacher l'étiquette. –

Questions connexes