2012-01-17 14 views
1

セルにテキストの量に応じて動的に高さを変更しようとしています。現在、ラッピングという言葉がありますが、セルの内容が多くなるとすぐに3行目に行く)、2行目以降は何も見ることができません。ダイナミックUITableViewCellの高さ

これは私がこれまで行ってきたことです。うまくいけば、誰かが私が何かを見逃しているか、何か間違っているかどうかを知ることができます。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    UILabel *label = nil; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 

     label = [[UILabel alloc] initWithFrame:CGRectZero]; 
     [label setLineBreakMode:UILineBreakModeWordWrap]; 
     [label setMinimumFontSize:FONT_SIZE]; 
     [label setNumberOfLines:0]; 
     [label setFont:[UIFont systemFontOfSize:FONT_SIZE]]; 
     [label setTag:1]; 

     [[cell contentView] addSubview:label]; 
    } 

    // //Display cells with data that has been sorted from startSortingTheArray 
NSArray *keys = [self.letterDictionary objectForKey:[self.sectionLetterArray objectAtIndex:indexPath.section]]; 
NSString *key = [keys objectAtIndex:indexPath.row]; 

CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f); 

CGSize size = [key sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap]; 

if (!label) 
    label = (UILabel*)[cell viewWithTag:1]; 

[label setText:key]; 
[label setFrame:CGRectMake(CELL_CONTENT_MARGIN, CELL_CONTENT_MARGIN, CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), MAX(size.height, 44.0f))]; 






//Applise current key value to cell text label 
//cell.textLabel.text = key; 
return cell; 
} 

//Cell size for word wrapping. 
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; 
{ 

    //Display cells with data that has been sorted from startSortingTheArray 
    NSArray *keys = [self.letterDictionary objectForKey:[self.sectionLetterArray objectAtIndex:indexPath.section]]; 
    NSString *key = [keys objectAtIndex:indexPath.row]; 

    NSLog(@"%@", key); 

    CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f); 

    CGSize size = [key sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap]; 

    CGFloat height = MAX(size.height, 44.0f); 

    return height + (CELL_CONTENT_MARGIN * 2); 
} 

更新コード上記とにかく私のために今働いバージョン.. :)

+0

問題はセルの高さではなく、ラベルの高さです。あれは正しいですか?ラベルの高さをどこにも設定していないので、意味をなさないでしょう。 – sosborn

+0

hrmm ...まあまあ私はラベルを整理するのを見てまともなチュートリアルを見つけたと思います。私は今前にそれを与えるでしょう... –

+0

私はUILabelを追加して管理しましたセルのサイズを約2倍にします。しかし、それはテーブルビューのすべてのセルに、動的に拡大したいテキストが多いセルだけではありません。 –

答えて

3

以上起動して、単語のためにこのチュートリアル言葉に従うと、あなたは大丈夫です: Cocoa is My Girlfriend

それは、実際にあなたはこのチュートリアルを見て、それの一部に従ったように見えます。私はまだあなたがラベルのフレームを設定して表示されません。

+0

それは私が働いているthatsです。それは今、私は何をするかわからない... cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@ " Cell "] autorelease]; **あなたがARC initWithFrameを使用している場合、autoreleaseを除く:reuseIdentifier:廃止されましたので、私はそこで何をするのか分かりません... –

+0

それは働いています..私のセル選択を乱しているようですアクセサリーの見解は今ではありますが、悪い試しに、自分自身で問題を理解してください..助けてくれてありがとう –

関連する問題