2

UITableView に画像を追加すると、最初にセルに追加されたときに、ぎくしゃくしたスクロールが表示されることに気付きました。

リモートでロードするのではなく、コードは次のようになります。

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

MyObject *object = [self.myObjects objectAtIndex:indexPath.row]; 
cell.imageView.image = [UIImage imageNamed:object.imageName];

return cell;

(if (cell == nil) 行はありません。ビューにセルクラスを登録するとロードされます)

これは悪い方法ですか?もしそうなら、メインバンドルからセルのimageViewに画像を追加するにはどうすればよいですか?

4

1 に答える 1

1
  1. 画像のサイズを小さくしてみてください

  2. 何らかの理由でサイズを縮小できない場合は、以下のコードを試してください (operationQueue は NSOperationQueue のインスタンスの ivar です)。

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"identifier"];
        [operationQueue addOperationWithBlock:^{
            NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"name" ofType:@"jpg"];
            UIImage *image = [[UIImage alloc] initWithContentsOfFile:imagePath];
            [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
                cell.imageView.image = image;
            }];
        }];
        return cell;
    }
    
于 2012-10-31T01:46:59.020 に答える