0

画像をグリッドで表示したいので、GMGridView に UIImageView を追加しました。グリッドにイメージビューを追加すると、すべてが完全に機能します。最初の行と最初の列に異なる画像を表示したい。そこで、インデックスと比較してそのイメージを設定しました。しかし、上下にスクロールすると、画像が最初の列から2番目または3番目の列に変わります。また、6行目または7行目に同じ画像が表示されます。これで何がうまくいかないのですか?これが私のコードです

    - (GMGridViewCell *)GMGridView:(GMGridView *)gridView cellForItemAtIndex:(NSInteger)index
{
    CGSize size = [self GMGridView:gridView sizeForItemsInInterfaceOrientation:[[UIApplication sharedApplication] statusBarOrientation]];

    GMGridViewCell *cell = [gridView dequeueReusableCell];

    UIImageView *imageView = nil;
    if (!cell) 
    {
        cell = [[GMGridViewCell alloc] init];
        cell.deleteButtonIcon = [UIImage imageNamed:@"close_x.png"];
        cell.deleteButtonOffset = CGPointMake(-15, -15);

        imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, size.width, size.height)];

        cell.contentView = imageView;

    }

    NSLog(@"Project Index value:- %d",index);
    if (index == 0) {
        imageView.image = [UIImage imageNamed:@"add.png"]; 
    }
    else{
        imageView.image = [UIImage imageNamed:@"face.png"]; 
    }

    [[cell.contentView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];    
    return cell;
}

[[cell.contentView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)]; も必要ですか? ? 誰でも私を助けることができますか?ありがとう

4

1 に答える 1

1

コードを使ってみる

- (GMGridViewCell *)GMGridView:(GMGridView *)gridView cellForItemAtIndex:(NSInteger)index {
  CGSize size = [self GMGridView:gridView sizeForItemsInInterfaceOrientation:[[UIApplication sharedApplication] statusBarOrientation]];
  GMGridViewCell *cell = [gridView dequeueReusableCell];

UIImageView *imageView = nil;
if (!cell) 
{
    cell = [[GMGridViewCell alloc] init];
    cell.deleteButtonIcon = [UIImage imageNamed:@"close_x.png"];
    cell.deleteButtonOffset = CGPointMake(-15, -15);

    imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, size.width, size.height)];
    NSLog(@"Project Index value:- %d",index);
    if (index == 0) {
       imageView.image = [UIImage imageNamed:@"add.png"]; 
    }
    else{
       imageView.image = [UIImage imageNamed:@"face.png"]; 
    }
       [[cell.contentView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];    
    cell.contentView = imageView;

}
return cell;

}

問題は、使用してセルを削除している可能性があると思います。インスタンスが存在するためmakeObjectsPerformSelectorにコントロールが状態に入らない可能性があるため、削除後に再度追加されることはありません。これがお役に立てば幸いです。if (!cell) {}cell

于 2012-06-20T13:33:03.453 に答える