1

ビューにテーブル ビュー コントローラーを実装しています。Apple ドキュメントの具体的な詳細としてUITableViewCellStyleSubtitle、表のセルに使用しました。

私が必要としているのは、左側に小さなアバター、太字textLabelと小さいdetailTextLabel. textLabelとはdetailTextLabel1 行だけではなく、複数行です。

リンクからチュートリアルを試していますが、シミュレーターにはtextLabel.

これが私のcellForRowAtIndexPath:方法です:

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

static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
    }
cell.textLabel.text = [newsTitle objectAtIndex:indexPath.row];
    cell.textLabel.font = [UIFont boldSystemFontOfSize:18];
    cell.textLabel.numberOfLines = ceilf([[newsTitle objectAtIndex:indexPath.row] sizeWithFont:[UIFont boldSystemFontOfSize:18] constrainedToSize:CGSizeMake(300, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap].height/20);

    cell.detailTextLabel.text = [newsDescription objectAtIndex:indexPath.row];
    cell.detailTextLabel.font = [UIFont systemFontOfSize:14];
    cell.detailTextLabel.numberOfLines = ceilf([[newsTitle objectAtIndex:indexPath.row] sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(300, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap].height/20);
return cell;
}

heightForRowAtIndexPath:メソッド は次のとおりです。

(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{

    NSString *titleString = [newsTitle objectAtIndex:indexPath.row];
    NSString *detailString = [newsDescription objectAtIndex:indexPath.row];
    CGSize titleSize = [titleString sizeWithFont:[UIFont boldSystemFontOfSize:18] constrainedToSize:CGSizeMake(300, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];
    CGSize detailSize = [detailString sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(300, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];

    return detailSize.height+titleSize.height;

}

注:配列は、newsTitleの内容を保持します。アバターはまだ含まれていません。誰かがこの問題を解決し、このテーブル ビュー セルに小さなアバターを追加するのを手伝ってくれると大変ありがたいです。textLabelnewsDescriptiontextDetailLabel

4

1 に答える 1

0

で選択した を入力できるのプロパティを持つカスタムUITableViewCellサブクラスを作成する必要があります。のサブビューとして を追加してから、セルのインデントを の幅に加えていくつかのパディングになるように調整することをお勧めします。これには、セルの内容全体を右に移動して、画像用のスペースを作る効果があります。UIImageViewUIImagecellForRowAtIndexPath:UIImageViewcontentViewUIImageView

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];

    if (self) {
        // make room for the icon
        self.indentationLevel = 1;
        self.indentationWidth = kIconWidth + kIconPadding;

        _iconImageView = [[UIImageView alloc] initWithFrame:CGRectMake(kIconPadding, kIconPadding, kIconWidth, kIconWidth)];
        [self.contentView addSubview:_iconImageView];
    }

    return self;
}
于 2013-04-24T01:24:27.380 に答える