1

私はこれを解決しようとして何時間も費やして成功しませんでした。

データに応じて高さが動的に調整されるように、UITableViewCellにデータを表示しようとしています。

現在、アプリは大量のデータで正常に動作しているように見えますが、一部のデータでは、ラベルが適切に調整されていません。ご覧のとおり、指定されたテキストの高さを返すconstraintToSize機能が使用されています。

この高さは何度も間違って与えられます。例えば。ラベルテキストが「高-パルス状の白、グライドパス上-安定した白、グライドスロープのわずかに下の安定した赤、低-パルス状の赤」の場合。それよりも高いはずの場合、返される高さは63です。

別の例:「高-パルス状の白、コース上およびグライドパス上-安定した白、コース外、ただしグライドパス上-パルス状の白と赤;低-パルス状の赤」は、ラベルの高さの合計を84として返します。ラベルが私のテーブルビューにまったく収まりません。

私が気付いた奇妙なことは、強打されていないセルのサイズが通常63または84であるということです...私はこれ以上そのようなサイズに出くわしたことはありませんが、それが役立つ場合は..

コード:

if (tableView.tag ==1) {
    NSString *cellText;
    if ([multipleAddressSplit count]==0) {

        if (indexPath.row ==0) {

            cellText =[OptionText1 objectAtIndex:i];
        }
        if (indexPath.row == 1) {

            cellText =[OptionText2 objectAtIndex:i];

        }
        if (indexPath.row == 2) {

            cellText =[OptionText3 objectAtIndex:i];

        }
    }


    UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:17.0];
    CGSize constraintSize = CGSizeMake(OptionTable.frame.size.width , MAXFLOAT);
    CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

    NSLog(@"========start=========");
    NSLog(@"Celltext is: %@",cellText);
    NSLog(@"Method Label %f",(labelSize.height));
    NSLog(@" 1/3rd %f",(OptionTable.frame.size.height/3-15));
    NSLog(@"=========stop========");


    if ((labelSize.height)<((OptionTable.frame.size.height/3)-15)) {
        NSLog(@" Returned 1/3rd is: %f",(OptionTable.frame.size.height/3));

        return (OptionTable.frame.size.height/3);
    }

    else {
        return labelSize.height + 15;

    }

前もって感謝します。

4

2 に答える 2

1

これに対する解決策は非常に単純で簡単でした。

LabelSizeの幅をセルの幅と同じにしましたが、実際のtextLabelは各辺から約10ピクセル離れています。高さから20ピクセルを引くと、問題が修正されました。

皆さん、答えてくれてありがとう。

于 2012-08-07T17:47:53.443 に答える
0

デリゲートメソッドで

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    NSString *strIden = [NSString stringWithFormat:@"cell%d",indexPath.row];
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:strIden];
         if(cell==nil){
                cell = [[[UITableViewCell alloc]  initWithStyle:UITableViewCellStyleValue1

                reuseIdentifier:strIden] autorelease];
         }
}

別のセルIDを作成します。

于 2012-06-12T05:55:58.813 に答える