2012-03-22 20 views
0

グループ化されたテーブルビューで連絡先の詳細を表示したい。しかし、詳細は動的な長さのため、私はセルの動的な高さが必要です。それはいくつかのセクションでは動作しますが、セクションの再読み込みでは機能しません。ここに私のコードは、私は電子メール、電話番号、URLのアドレス&ノートではなくのための動的テーブルセルの高さだグループ化テーブルビューでダイナミックテーブルセルの高さが表示されない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; 
} 

です。電話番号またはURLが十分に長い場合は、何も表示されません。 は、ヘルプのどれknidが高く評価され、以下のスクリーンショット

enter image description here

enter image description here

を参照してください。ありがとう。

答えて

1

あなたはCONSTRAINT_WIDTH = 320.0fを与えていると思います。約200.0Fだと思いますので、この変更を加えて問題が解決されたと思ってください。 以上あなたの値ラベルにこれを使用してくださいcell.lblValue.lineBreakMode=UILineBreakModeWordWrap;

+0

ありがとうございます...これはCONSTRAINT_WIDTHを変更するだけで完全に動作します。 – iOSAppDev

+0

cell.lblValue.lineBreakMode = UILineBreakModeWordWrapを設定する必要がある理由を教えてください。 ?デフォルトの 'UILineBreakMode'が' UILineBreakModeTailTruncation'に設定されているので、cell.lblValue.numberOfLines = 0. – iOSAppDev

+0

を既に設定しているので、あなたが単語でブレークをリンクしたい場合、これを使用する必要があります。 – hchouhan02

関連する問題