1

セルの高さが動的なテーブルビューを作成しようとしています。

これまでのところ、内部に追加したカスタム UILabel に応じてセルの高さを設定できました。

通常の cell.textLabel では問題なく動作しますが、独自のラベルを使用すると問題が発生します。ラベルの半分しか表示されませんが、上下にスクロールすると、ラベルが拡張されてすべてのテキストが表示されることがあります... ラベルが画像のどこで終了するかがわかります。

画像

これは 内のテキストですcellForRowAtIndexPath:

static NSString *CellIdentifier = @"Cell";

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

// Configure the cell.
Car *carForCell = [cars objectAtIndex:indexPath.row];

UILabel *nameLabel = [[UILabel alloc] init];
nameLabel = (UILabel *)[cell viewWithTag:100];
nameLabel.numberOfLines = 0;
nameLabel.text = carForCell.directions;
[nameLabel sizeToFit];

[nameLabel setBackgroundColor:[UIColor greenColor]];


return cell;
4

3 に答える 3

1

投稿したコードにタイプミスがない限り、セルにラベルを追加しているようには見えません。また、毎回新しいラベルを作成し、nameLabelポインタの内容をセルのビュー(常にnil)に置き換えているようです。

最初にこのようなことをしてから、それがどのように見えるかを確認してください。

static NSString *CellIdentifier = @"Cell";

UILabel *nameLabel;

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

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

    nameLabel = [[UILabel alloc] init];
    nameLabel.tag = 100;

    nameLabel.numberOfLines = 0;
    [nameLabel setBackgroundColor:[UIColor greenColor]];

    [cell.contentView addSubview:nameLabel];
}
else {
     nameLabel = (UILabel *)[cell viewWithTag:100];
}

// Configure the cell.
Car *carForCell = [cars objectAtIndex:indexPath.row];

nameLabel.text = carForCell.directions;
[nameLabel sizeToFit];

return cell;

tableView:heightForRowAtIndexPath:また、デリゲートメソッドを使用して各セルに必要なサイズをtableViewに通知する必要があります。これは、関連するCarオブジェクトを再度取得し、を使用して高さを計算することを意味しますsizeWithFont:sizeWithFont:forWidth:lineBreakMode:

于 2013-02-08T18:10:45.627 に答える
0

セルの高さをどのように設定していますか? それはで行われるべきです- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

于 2013-02-08T18:03:19.747 に答える