2011-01-11 19 views
0
static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@""]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault  reuseIdentifier:CellIdentifier] autorelease]; 
} 
//cell.backgroundView = [[[CustomCell alloc] init] autorelease]; 
cell.selectedBackgroundView = [[[CustomCell alloc] init] autorelease]; 

// At end of function, right before return cell: 
cell.textLabel.backgroundColor = [UIColor clearColor]; 


// Configure the cell. 
UILabel *myLabel1 = [[UILabel alloc] initWithFrame:CGRectMake(-30, 3, 300, 22)]; 
UILabel *myLabel2 = [[UILabel alloc] initWithFrame:CGRectMake(10, 22, 310, 200)]; 
UILabel *myLabel3 = [[UILabel alloc] initWithFrame:CGRectMake(0, 170, 300, 20)]; 

Book *aBook = [appDelegate.books objectAtIndex:indexPath.row]; 


    myLabel1.text=aBook.title; 
    myLabel2.text=aBook.description; 
    myLabel3.text=aBook.pubDate; 

    NSString *desc = aBook.description; 
    if ([desc isEqualToString:nil]) { 
     NSLog(@"nullll lll "); 
    } 


//myLabel2.textAlignment=UITextAlignmentCenter;    
myLabel2.numberOfLines=5; 
myLabel2.textColor=[UIColor blueColor]; 
myLabel2.lineBreakMode=UILineBreakModeWordWrap; 
myLabel2.font=[UIFont systemFontOfSize:14]; 
myLabel3.numberOfLines=1; 
myLabel1.numberOfLines=1; 
myLabel1.textColor=[UIColor redColor]; 
myLabel1.font=[UIFont systemFontOfSize:20]; 
myLabel1.shadowColor=[UIColor redColor]; 
myLabel1.backgroundColor=[UIColor grayColor]; 
     [cell.contentView addSubview:myLabel1]; 
     [cell.contentView addSubview:myLabel2]; 
     [cell.contentView addSubview:myLabel3]; 

こんにちは!私はこのコードを持っている、私はXMLファイルからこれを表示したい。現在は動作していますが静的な行の高さです。 xmlファイルにデータがない場合は、空白のままになります。私はmylabel1,2,3.textを使って提供するデータに応じて行の高さを変更したい動的行の高さ

答えて

0

(私がいない場合や謝罪)私は当たり前の質問を理解していれば、:

  1. のtableViewを実装します。heightForRowAtIndexPath:あなたのtableViewデリゲートのメソッドは、 - それは適した高さを計算して返してもらいます行。
  2. contentViewに追加するUILabelViewのサイズを設定します(またはスーパービューから削除するだけです)。あなたはのtableViewでこの操作を行う:cellForRowAtIndexPath:
  3. が変更されている行のみをリロード、あなたがテーブルをリロードするか、より良いことを確認してください - これは、高さを取得するためのtableViewを強制的に再

はここでのtableViewの例です:表示されている段落内のテキストの量に応じて、セル行の高さを動的にサイズ変更する単一セクションテーブルのheightForRowAtIndexPathメソッド。

- (CGFloat) tableView: tableView heightForRowAtIndexPath: indexPath; 
{ 
    CGFloat rowHeight = [self rowHeight:[[self paragraphs] objectAtIndex: [indexPath row]]; 
    return (rowHeight + EI_CELL_MARGIN); 
} 

そして、tableView:cellForRowAtIndexPath:メソッドのフラグメント。

NSString* cellText = [[self paragraphs] objectAtIndex: [indexPath row]; 
[[cell paragraphController] setText: cellText]; 
[[cell paragraphController] adjustFrameToTextSize]; 

(それは、このコードで行くとして、私は便宜上のUITableViewCellをサブクラス化してきました。「paragraphControllerはただ眺めとのViewControllerは、セルのコンテンツビューに追加される。adjustFrameToTextSize方法は、依存ビューフレームをリセット表示するコンテンツのサイズです。)

2

UITableViewDelegateプロトコルで指定されているように、tableView:heightForRowAtIndexPath:メソッドをデリゲートに実装します。その方法では、あなたはindexPathを与えられているので、あなたは、あなたが本を持っていたら、そのプロパティを確認することができます

Book *aBook = [appDelegate.books objectAtIndex:indexPath.row];

行を繰り返すことができます(見えtitledescription、およびpubDateなど)、その後、代わりに追加しますそれらを後で行うセルに追加すると、プロパティ値に基づいて計算されたセルの高さが返されます。その後、

+0

plsは基本レベルにします。私は初心者のiphoneに、私didnot uは申し訳ありません – Splendid

1

こんにちは、NSStringのメソッドを試してみてください。これをセルの高さと書いてください。

NSString *text1 = [arrOutline1 objectAtIndex:[indexPath row]]; 

CGSize constraint1 = CGSizeMake(CELL_CONTENT_WIDTH , 20000.0f); 
CGSize size1 = [text1 sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint1 lineBreakMode:UILineBreakModeWordWrap]; 
CGFloat YPostion =MAX(size3.height, 44.0f); 

cellHeight = cellHeight + YPostion + 20;; 

return cellHeight ;