2009-05-22 56 views

答えて

2

あなたはUITableViewCellをサブクラス化せずにそれを行うことができます。

tableView:cellForRowAtIndexPath:の方法では、基本UITableViewCellを作成し、このセルに含まれているUILabelのプロパティを変更します。セルのテキストをより多く表示できるように、行の最大数を変更します。

残念ながら、セルのラベルにはプロパティでアクセスできないため、subviewsプロパティでセルのラベルを取得する必要があります。

もちろん、実装の詳細はUITableViewCellであるため、SDKの将来のリリースでは壊れる可能性があります。注意して使用してください。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"YourCellId"]; 
    if (cell == nil) 
    { 
     cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"YourCellId"] autorelease]; 
     cell.font = [UIFont systemFontOfSize:16]; 
     UILabel* cellLabel = [cell.contentView.subviews objectAtIndex:0]; 
     [cellLabel setNumberOfLines:3]; 
    } 
    cell.text = @"Your text"; 
    return cell; 
} 

アップデート:ここで

は一例であり

テキストに合わせて行の高さを設定するには、次の操作を実行できます。

セルを設定し

1テキストに合わせて高さ。

CGSize textSize = [text sizeWithFont:font 
        constrainedToSize:CGSizeMake(313, 1000) 
         lineBreakMode:UILineBreakModeWordWrap]; 
cell.frame = CGRectMake(0.0f, 0.0f, 320.0, textSize.height); 

2.戻りtableView:heightForRowAtIndexPath:方法でセルの高さ:

あなたはこのようなものが必要。このような例

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell* cell = [self tableView:(UITableView*)self.view cellForRowAtIndexPath:indexPath]; 
    CGRect cellFrame = cell.frame; 
    return cellFrame.size.height; 
} 
+0

ありがとう!しかし、私のawakeFromNibでは、私はこのコードを持っています "self.jokeTableView.rowHeight = 70.0;" どのようにテキストが収まる必要があるかによってrowHeightが変わるようにするにはどうすればよいですか? –

+0

私は私の答えでこれを行う方法の例を追加しました。それが役に立てば幸い。 – henning77

0

サブクラスUITableViewCell、およびサブクラスのloadView方法では、そのcontentView内UILabelを作成します。このラベルを適切な折り返しと位置を持つように設定します。

+0

私はこの方法でそれを指定することはできますか? - (UITableViewCellの*)tableViewCell:(のUITableView *)のtableView cellForRowAtIndexPath:(NSIndexPath *)indexPath –

+0

私はテキストサイズを変更し、それはあなたがその方法でそれをすべて指定することはできません –

+0

を働いたことがあるので。表示したいテキストの長さに応じて、各セルの高さを変更する必要があります。また、UILabelが表示できる最大行数を1より大きい数値に設定する必要があります。 – mmc

0

アダムは正しいです。もう少し詳しく(雷を速くスクロールする方法と同様に)、atebits.comでUILabelのアプローチを完全にバイパスするこのエントリをチェックすることができます。

Loren Brichter's UITableViewCell subclassing example

また、それはカスタムTableViewsを構築するため、複雑さを増す中で、5種類の例が含まれていdeveloper.apple.comからTableViewSuiteの例で見ることができます。最後の例は、atebits.comのチュートリアルと構造的に非常に似ています。

スタンフォードiPhoneコースの講義8は、ScrollとTableViewsについても、UITableViewCellをサブクラス化するいくつかの例があります。

iPhone Course

関連する問題