Xcode 4.6 にアプリケーションがあります。1 つのビュー コントローラーには、コレクション ビューがあります。セルは、ユーザーがビューを操作することによってビューに追加されます。これはうまくいきます。次に、セルを削除できるようにするボタンを各セルに (プログラムで) 追加したいと考えました。ボタンを各セルの右上隅に配置したかったのです。問題は、ボタンがコレクション ビューの最初の行 (右上) のすべてのセルの各セル内の目的の場所に表示されるが、最初の行の後のすべてのセルのセルの外側に表示されることです。下の画像を参照してください。
私のボタン作成方法は次のとおりです。
-(CollectionViewCellButton *)makeDeleteButtonForCell:(UICollectionViewCell *)cell
{
CollectionViewCellButton *button = [CollectionViewCellButton buttonWithType:UIButtonTypeCustom];
CGSize newImageSize = CGSizeMake(cell.frame.size.width/2.5, cell.frame.size.height/2.5);
UIImage *image = [SeeYourAlbumViewController imageWithImage:[UIImage imageNamed:@"delete"] scaledToSize:newImageSize];
CGFloat width = image.size.width;
CGFloat height = image.size.height;
CGFloat X = cell.frame.size.width - width;
CGFloat Y = cell.frame.origin.y;
button.frame = CGRectMake(X, Y, width, height);
[button setImage:image forState:UIControlStateNormal];
[button addTarget:self
action:@selector(deleteCollectionViewCell:)
forControlEvents:UIControlEventTouchUpInside];
return button;
}
上記のメソッドは、私のセル作成メソッドで次のように呼び出されます。
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell *cell = [collectionView
dequeueReusableCellWithReuseIdentifier:@"newCell"
forIndexPath:indexPath];
//CALLED HERE!!
CollectionViewCellButton *cellButton = [self makeDeleteButtonForCell:cell];
cellButton.indexPath = indexPath;
[cell addSubview:[self.pictures objectAtIndex:indexPath.row]];
[cell addSubview:cellButton];
return cell;
}
誰かが私が間違っているかもしれないことを提案できますか?