0

RSS フィード アプリを作成しています。説明を表示する必要がある場所 (それぞれ 5000 文字以上)。アプリですべてのフィードを表示できますが、UITableView をスクロールしようとすると問題が発生し、スクロールがスムーズではありません。コンテンツの遅延読み込みを行う必要があると思いますが、iPhone 開発は初めてです。誰でも正しい方法を教えてもらえますか。また、コンテンツのサイズに応じて正しいセル サイズを設定します。

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

    static NSString *simpleTableIdentifier = @"SimpleTableCell";

    SimpleTableCell  *cell = (SimpleTableCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    if (cell == nil)
    {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SimpleTableCell" owner:self options:nil];
        cell = [nib objectAtIndex:0];


    }


    MWFeedItem *item = [itemsToDisplay objectAtIndex:indexPath.row];
    if (item) {

        if(cell.gestureRecognizers.count==0){
            UILongPressGestureRecognizer *longPress=[[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longSelection:)];
            longPress.minimumPressDuration=1.0;
            [cell addGestureRecognizer:longPress];


        }

        UIImageView *imageView=[[UIImageView alloc] initWithFrame:cell.frame];
        UIImage *image=[UIImage imageNamed:@"Background.png"];

        imageView.image=image;
        cell.backgroundView=imageView;
        [[cell  textLabel] setBackgroundColor:[UIColor clearColor]];

        cell.textLabel.textAlignment=NSTextAlignmentRight;
        cell.textLabel.text=item.content;
        cell.textLabel.numberOfLines=0;
        cell.textLabel.font=[UIFont systemFontOfSize:15.0];
        [cell.textLabel sizeToFit];


        }

    return cell;



}

ありがとう

4

1 に答える 1

0

を使用する必要があります-(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

そのようです:

-(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    MWFeedItem *item = [itemsToDisplay objectAtIndex:indexPath.row];
    //make sure to add the font you're using
    CGSize stringSize = [item.content sizeWithFont:[UIFont fontWithName:@"HelveticaNeue" size:14]
                                     constrainedToSize:CGSizeMake(320, MAXFLOAT)
                                         lineBreakMode:UILineBreakModeWordWrap];

    int rowHeight = stringSize.height;

    return rowHeight;
}

このコードを入れてください:

    UIImageView *imageView=[[UIImageView alloc] initWithFrame:cell.frame];
    UIImage *image=[UIImage imageNamed:@"Background.png"];

    imageView.image=image;
    cell.backgroundView=imageView;

ここの内部をそのままにして、現在の場所から削除します (そこに保持すると、スクロールするたびに新しいイメージビューが作成されます:

    if (cell == nil)
    {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SimpleTableCell" owner:self options:nil];
        cell = [nib objectAtIndex:0];
        UIImageView *imageView=[[UIImageView alloc] initWithFrame:cell.frame];
        UIImage *image=[UIImage imageNamed:@"Background.png"];

        imageView.image=image;
        cell.backgroundView=imageView;

    }
于 2013-01-21T19:00:03.163 に答える