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 方法中使用 batchUpdate 而不是 reloadData 。

于 2012-10-29T13:53:20.717 回答