1

データを表示していますが、あるセクションのUITableviewテキストが箱から出して別のセクションに表示されています。理由がわかりませんか?

ここに画像の説明を入力してください

これが私のコードです:

if(indexPath.section == 0){
    cell.textLabel.font = [UIFont boldSystemFontOfSize:14];
    cell.textLabel.textColor = [UIColor blackColor];
        cell.detailTextLabel.numberOfLines=3;
    cell.detailTextLabel.textColor=[UIColor colorWithRed:0.40 green:0.40 blue:0.40 alpha:1.0];
    cell.textLabel.text=[NSString stringWithFormat:@"School Hours:"];
    cell.detailTextLabel.text=[NSString stringWithFormat:@"Take in time: %@ \nDissmiss time:%@ \nPhone No: %@ ",[array objectAtIndex:indexPath.row],[array1 objectAtIndex:indexPath.row],[array2 objectAtIndex:indexPath.row]];

    cell.textLabel.backgroundColor=[UIColor clearColor];
    cell.detailTextLabel.backgroundColor=[UIColor clearColor];
    }
    else if(indexPath.section == 1){cell.textLabel.font = [UIFont boldSystemFontOfSize:14];
        cell.textLabel.textColor = [UIColor blackColor];
         cell.detailTextLabel.numberOfLines=3;
        cell.detailTextLabel.textColor=[UIColor colorWithRed:0.40 green:0.40 blue:0.40 alpha:1.0];
        cell.textLabel.text=[NSString stringWithFormat:@"Principal"];
        NSString *thumbs = [NSString stringWithFormat:@"%@", [imagearray objectAtIndex:indexPath.row]];
        UIImage *thumbs1 = [UIImage imageWithData:[NSData dataWithContentsOfURL:
                                                  [NSURL URLWithString:thumbs]]];
       // cell.imageView.image = [UIImage imageNamed:th];
        cell.detailTextLabel.text=[NSString stringWithFormat:@" %@  ",[imagearray objectAtIndex:indexPath.row]] ;
        cell.textLabel.backgroundColor=[UIColor clearColor];
        cell.detailTextLabel.backgroundColor=[UIColor clearColor];}

誰かが私に何が悪かったのか教えてもらえますか?セクションのヘッダーとフッターも設定しました。

4

2 に答える 2

0

セルの高さを設定しますたとえば...

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

    NSString *titleString = yourTitleString;///here just write your string here
    NSString *detailString = [NSString stringWithFormat:@"Take in time: %@ \nDissmiss time:%@ \nPhone No: %@ ",[array objectAtIndex:indexPath.row],[array1 objectAtIndex:indexPath.row],[array2 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;
}

そして、セルの動的高さの共通セルのコードを設定するだけです。以下の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 = @"YourTitle";
    cell.textLabel.font = [UIFont boldSystemFontOfSize:18];
    cell.textLabel.numberOfLines = ceilf([@"YourTitle" sizeWithFont:[UIFont boldSystemFontOfSize:18] constrainedToSize:CGSizeMake(300, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap].height/20.0);
    cell.detailTextLabel.text = [NSString stringWithFormat:@"Take in time: %@ \nDissmiss time:%@ \nPhone No: %@ ",[array objectAtIndex:indexPath.row],[array1 objectAtIndex:indexPath.row],[array2 objectAtIndex:indexPath.row]];
    cell.detailTextLabel.font = [UIFont systemFontOfSize:14];
    cell.detailTextLabel.numberOfLines = ceilf([[NSString stringWithFormat:@"Take in time: %@ \nDissmiss time:%@ \nPhone No: %@ ",[array objectAtIndex:indexPath.row],[array1 objectAtIndex:indexPath.row],[array2 objectAtIndex:indexPath.row]]; sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(300, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap].height/20.0);

    return cell;
}
于 2012-12-26T10:31:30.127 に答える
0

このような巨大なデータの場合、データを切り捨てて表示する必要があります。これには、次のものを使用できます。

[[cell detailTextLabel] setLineBreakMode:UILineBreakModeTailTruncation];
 cell.detailTextLabel.numberOfLines = 0;

heightForRowAtIndexPathもう1つのオプションは、デリゲートを使用してtableViewCellの高さを調整する必要があることです。

于 2012-12-26T10:48:47.667 に答える