2012-03-22 1 views
0

J'ai tableau Table View dans lequel je veux afficher les coordonnées. Mais les détails sont de longueur dynamique donc j'ai besoin de hauteur dynamique pour la cellule. Cela fonctionne pour certaines sections mais ne fonctionne pas pour la section Remianing. Voici mon codeNon affichage de la hauteur de cellule de tableau dynamique dans la vue de tableau groupé iphone

#define PHONE_DETAIL_SECTION 0 
    #define EMAIL_DETAIL_SECION 1 
     #define URL_DETAIL_SECTION 2 
     #define ADDRESS_DETAIL_SECTION 3 
     #define BIRTHDAY_DETAIL_SECTION 4 
     #define NOTE_DETAIL_SECTION 5 
     #define CONSTRAINT_WIDTH 320.0f 
     #define FONT_SIZE 17.0f 
     #define MARGIN_SIZE 20.0f 
     #define NO_OF_SECTION 6 


#pragma mark - Table view data source 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return NO_OF_SECTION; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    switch (section) { 

     case PHONE_DETAIL_SECTION: 
      return [APP_DELGATE.phonenumberDetailLabelArray count]; 

     case EMAIL_DETAIL_SECION: 
      return [APP_DELGATE.emailLabelDetailArray count]; 

     case URL_DETAIL_SECTION: 
      return [APP_DELGATE.urlLabelDetailArray count]; 

     case ADDRESS_DETAIL_SECTION: 
       return [APP_DELGATE.addressDetailLabelArray count]; 

     case BIRTHDAY_DETAIL_SECTION: 
      if(birthdateString) 
       return 1; 
      else 
       return 0; 

     case NOTE_DETAIL_SECTION: 
       if(noteString) 
        return 1; 
       else 
        return 0; 

     default: 
      break; 
    } 
    return 0; 
} 

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

    NSLog(@"section:::%d",indexPath.section); 
    static NSString *CellIdentifier = @"Cell"; 

    // DetailCell is subclass of UITableCell which 
    // contains only 2 labels:- lblName & lblValue 

    DetailCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil) 
    { 
     NSArray *cellArray=[[NSBundle mainBundle] loadNibNamed:@"DetailCell" owner:self options:nil]; 
     cell=[cellArray objectAtIndex:0]; 
     [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 
    } 

    if (indexPath.section==PHONE_DETAIL_SECTION) { 

     cell.lblName.text=(NSString*)[APP_DELGATE.phonenumberDetailLabelArray objectAtIndex:indexPath.row]; 

     cell.lblValue.numberOfLines = 0; 
     CGSize suggestedSize = [[APP_DELGATE.phonenumberDetailArray objectAtIndex:indexPath.row] sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:CGSizeMake(CONSTRAINT_WIDTH, LONG_LONG_MAX) lineBreakMode:UILineBreakModeWordWrap]; 
     NSLog(@" 222222 suggested size height ph no => %f",suggestedSize.height); 
     cell.lblValue.frame = CGRectMake(cell.lblValue.frame.origin.x, cell.lblValue.frame.origin.y, cell.lblValue.frame.size.width, suggestedSize.height); 

     cell.lblValue.text=(NSString*)[APP_DELGATE.phonenumberDetailArray objectAtIndex:indexPath.row]; 
    } 

    else if(indexPath.section==EMAIL_DETAIL_SECION) { 

     cell.lblName.text=(NSString*)[APP_DELGATE.emailLabelDetailArray objectAtIndex:indexPath.row]; 

     cell.lblValue.numberOfLines = 0; 

     CGSize suggestedSize = [[APP_DELGATE.emailDetailArray objectAtIndex:indexPath.row] sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:CGSizeMake(CONSTRAINT_WIDTH, LONG_LONG_MAX) lineBreakMode:UILineBreakModeWordWrap]; 
     cell.lblValue.frame = CGRectMake(cell.lblValue.frame.origin.x, cell.lblValue.frame.origin.y, cell.lblValue.frame.size.width, suggestedSize.height); 

     cell.lblValue.text=(NSString*)[APP_DELGATE.emailDetailArray objectAtIndex:indexPath.row]; 

    } 

    else if(indexPath.section==URL_DETAIL_SECTION) { 

     cell.lblName.text=(NSString*)[APP_DELGATE.urlLabelDetailArray objectAtIndex:indexPath.row]; 

     cell.lblValue.numberOfLines = 0; 
     CGSize suggestedSize = [[APP_DELGATE.urlDetailArray objectAtIndex:indexPath.row] sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:CGSizeMake(CONSTRAINT_WIDTH, LONG_LONG_MAX) lineBreakMode:UILineBreakModeWordWrap]; 
     NSLog(@" 222222 suggested size height url => %f",suggestedSize.height); 
     cell.lblValue.frame = CGRectMake(cell.lblValue.frame.origin.x, cell.lblValue.frame.origin.y, cell.lblValue.frame.size.width, suggestedSize.height); 

     cell.lblValue.text=(NSString*)[APP_DELGATE.urlDetailArray objectAtIndex:indexPath.row]; 

    } 

    else if (indexPath.section==ADDRESS_DETAIL_SECTION) { 

     cell.lblName.text=(NSString*)[APP_DELGATE.addressDetailLabelArray objectAtIndex:indexPath.row]; 

     cell.lblValue.numberOfLines = 0; 
     CGSize suggestedSize = [[APP_DELGATE.addressDetailArray objectAtIndex:indexPath.row] sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:CGSizeMake(CONSTRAINT_WIDTH, LONG_LONG_MAX) lineBreakMode:UILineBreakModeWordWrap]; 

     cell.lblValue.frame = CGRectMake(cell.lblValue.frame.origin.x, cell.lblValue.frame.origin.y, cell.lblValue.frame.size.width, suggestedSize.height); 

     cell.lblValue.text = (NSString*)[APP_DELGATE.addressDetailArray objectAtIndex:indexPath.row];   
    } 

    else if(indexPath.section==BIRTHDAY_DETAIL_SECTION) { 

     NSString *birthdateStringLocal=[ContactDetails getBirthDate:record]; 
     cell.lblName.text=BIRTHDAY_LABEL; 

     cell.lblValue.text=birthdateStringLocal; 
    } 

    else if(indexPath.section==NOTE_DETAIL_SECTION) { 

     cell.lblName.text=NOTES_LABEL; 
     cell.lblValue.numberOfLines = 0; 
     CGSize suggestedSize = [noteString sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:CGSizeMake(CONSTRAINT_WIDTH, LONG_LONG_MAX) lineBreakMode:UILineBreakModeWordWrap]; 
     cell.lblValue.frame = CGRectMake(cell.lblValue.frame.origin.x, cell.lblValue.frame.origin.y, cell.lblValue.frame.size.width, suggestedSize.height); 

     cell.lblValue.text=noteString; 

    } 

    return cell; 
} 


-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (indexPath.section==PHONE_DETAIL_SECTION){ 

     CGSize suggestedSize = [[APP_DELGATE.phonenumberDetailArray objectAtIndex:indexPath.row] sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:CGSizeMake(CONSTRAINT_WIDTH, LONG_LONG_MAX) lineBreakMode:UILineBreakModeWordWrap]; 

     NSLog(@"1111111suggested size height Phone no=> %f",suggestedSize.height); 
     return suggestedSize.height + MARGIN_SIZE; 
    } 

    else if (indexPath.section==ADDRESS_DETAIL_SECTION){ 

     CGSize suggestedSize = [[APP_DELGATE.addressDetailArray objectAtIndex:indexPath.row] sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:CGSizeMake(CONSTRAINT_WIDTH, LONG_LONG_MAX) lineBreakMode:UILineBreakModeWordWrap]; 

     NSLog(@"1111111suggested size height Address=> %f",suggestedSize.height); 
     return suggestedSize.height + MARGIN_SIZE; 
    } 

    else if (indexPath.section==EMAIL_DETAIL_SECION){ 

     NSLog(@"String 1111: %@", [APP_DELGATE.emailDetailArray objectAtIndex:indexPath.row]); 

     CGSize suggestedSize = [[APP_DELGATE.emailDetailArray objectAtIndex:indexPath.row] sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:CGSizeMake(CONSTRAINT_WIDTH, LONG_LONG_MAX) lineBreakMode:UILineBreakModeWordWrap]; 

     NSLog(@"1111111suggested size height Email=> %f",suggestedSize.height); 
     return suggestedSize.height + MARGIN_SIZE; 
    } 

    else if (indexPath.section == NOTE_DETAIL_SECTION){ 
     CGSize suggestedSize = [noteString sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:CGSizeMake(CONSTRAINT_WIDTH, LONG_LONG_MAX) lineBreakMode:UILineBreakModeWordWrap]; 

     NSLog(@"1111111suggested size height NOTES=> %f",suggestedSize.height); 
     return suggestedSize.height + MARGIN_SIZE; 
    } 

    else if (indexPath.section == URL_DETAIL_SECTION){ 
     CGSize suggestedSize = [[APP_DELGATE.urlDetailArray objectAtIndex:indexPath.row] sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:CGSizeMake(CONSTRAINT_WIDTH, LONG_LONG_MAX) lineBreakMode:UILineBreakModeWordWrap]; 

     NSLog(@"1111111suggested size height URL=> %f",suggestedSize.height); 
     return suggestedSize.height + MARGIN_SIZE; 
    } 
    else 
     return 50; 
} 

Je suis hauteur de cellule de tableau dynamique pour l'adresse & billets mais pas pour Email, Téléphone, URL. Si le numéro de téléphone ou l'url est assez long, il ne montre rien. S'il vous plaît voir les captures d'écran ci-dessous

enter image description here

enter image description here

Toute knid d'aide est appréciée. Merci.

Répondre

1

Je pense que cela arrive parce que vous donnez CONSTRAINT_WIDTH = 320.0f je pense que c'est environ 200.0F alors faites ce changement et ensuite voir le résultat je pense que votre problème est résolu. et plus, pensez à l'utiliser pour vos étiquettes de valeur cell.lblValue.lineBreakMode=UILineBreakModeWordWrap;

+0

Merci beaucoup ... Cela fonctionne parfaitement en changeant CONSTRAINT_WIDTH. – iOSAppDev

+0

Pouvez-vous me dire pourquoi dois-je définir cell.lblValue.lineBreakMode = UILineBreakModeWordWrap; ? Parce que j'ai déjà défini cell.lblValue.numberOfLines = 0. – iOSAppDev

+0

parce que par défaut 'UILineBreakMode' est défini sur' UILineBreakModeTailTruncation', donc si vous voulez lier la rupture par mots, vous devez l'utiliser. – hchouhan02

Questions connexes