0

AQGridViewでinsertItemsAtIndicesを呼び出すと、アイテムは関連するグリッドに表示されるのではなく、オーバーラップしています。GridViewでreloadDataを呼び出すと正常に機能しますが、一度に1つのセルを追加するだけです。

PortraitGridCellSizeForGridViewを実装しましたが、挿入呼び出しの後に呼び出されていないようです。

挿入する関連コードは次のとおりです。

[self.cartItemArray addObject:cartItem];

[self.cartGridView beginUpdates];

[self.cartGridView insertItemsAtIndices:[NSIndexSet indexSetWithIndex:self.cartItemArray.count - 1] withAnimation:AQGridViewItemAnimationNone];

[self.cartGridView endUpdates];

AQGridViewデリゲートメソッドは次のとおりです。

- (NSUInteger)numberOfItemsInGridView:(AQGridView *)gridView {

return _cartItemArray.count;

}

- (AQGridViewCell *)gridView:(AQGridView *)gridView cellForItemAtIndex:(NSUInteger)index {

static NSString * GridCellIdentifier = @"CartItemListViewCell";

CartItemListViewCell_iPad * cell = (CartItemListViewCell_iPad *)[gridView dequeueReusableCellWithIdentifier:GridCellIdentifier];

if (!cell) {
    CGRect cellFrame = CGRectMake(0, 0, _cellWidth, _cellHeight);
    cell = [[CartItemListViewCell_iPad alloc] initWithFrame:cellFrame reuseIdentifier:GridCellIdentifier];
}

CartItem *cartItem = [_cartItemArray objectAtIndex:index];

[(CartItemListViewCell_iPad*)cell updateCartItem:cartItem];

return cell;

}


- (CGSize)portraitGridCellSizeForGridView:(AQGridView *)gridView {

return CGSizeMake(_cellWidth, _cellHeight);
}

- (void)gridView:(AQGridView *)gridView didSelectItemAtIndex:(NSUInteger)index {

if (index >= _cartItemArray.count){
    return;
}

self.selectedItemIndex = index;

[[NSNotificationCenter defaultCenter] postNotificationName:NotificationEditPrintSizeCartItem object:[_cartItemArray objectAtIndex:index]];

}

そして、これがどのように見えるかです:

重なり合うセルの例

ご覧のとおり、画面上で2つのAQGridViewを使用しています。それが問題を引き起こしているのだろうか?どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

0

わかりました、それを解決しました。コードを検索すると、reloadDataで次のように呼び出されていることがわかりました。

[_gridData setDesiredCellSize: [_dataSource portraitGridCellSizeForGridView: self]];

したがって、何かを追加する前に、reloadDataを呼び出しています。

于 2013-01-14T17:44:42.813 に答える