0

をオーバーライドしようとしていますがUICollectionViewFlowLayout、奇妙なことに気付きました。ここに小さなコード スニペットが表示されます。

#import <UIKit/UIKit.h>

@interface SimpleFlowLayout : UICollectionViewFlowLayout 
@end

@implementation SimpleFlowLayout

- (void)prepareLayout {
    ...
}

- (void)prepareForCollectionViewUpdates:(NSArray *)updateItems {
    ...
}

- (void)finalizeCollectionViewUpdates {
    ...
}

- (UICollectionViewLayoutAttributes *)
     initialLayoutAttributesForAppearingItemAtIndexPath:
       (NSIndexPath *)itemIndexPath {
    ...
}

- (UICollectionViewLayoutAttributes *)
     finalLayoutAttributesForDisappearingItemAtIndexPath:
       (NSIndexPath *)itemIndexPath {
    ...
}

@end

にアイテムが追加されるとUICollectionViewreloadDataが呼び出されます。ReloadDataは常にレイアウトを再初期化するため、何度も呼び出され、まったくprepareLayout呼び出さprepareForCollectionViewUpdatesれません。

それを処理する方法はありますか?

4

1 に答える 1

0

解決したので、textFieldShouldReturn メソッドで reloadData の代わりに batchUpdate を使用する必要がありました。

于 2012-10-29T13:53:20.717 に答える