【发布时间】:2012-10-28 21:55:27
【问题描述】:
我试图覆盖UICollectionViewFlowLayout,但我意识到一些奇怪的事情。这里可以看到一段小代码sn-p:
#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
当一个项目被添加到UICollectionView 时,reloadData 被调用。 ReloadData 总是重新初始化布局,因此它会一次又一次地调用prepareLayout,并且永远不会调用prepareForCollectionViewUpdates。
你知道如何处理它吗?
【问题讨论】:
-
更新:已解决,我不得不在 textFieldShouldReturn 方法中使用 batchUpdate 而不是 reloadData。
标签: ios ios6 uicollectionview uicollectionviewlayout