Странное переопределяющее поведение UICollectionViewFlowLayout

Пытаюсь переопределить 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

Когда элемент добавляется к UICollectionView, вызывается reloadData. ReloadData всегда повторно инициализирует макет, поэтому он будет вызывать prepareLayout снова и снова и никогда не будет вызывать prepareForCollectionViewUpdates вообще.

У вас есть идеи, как с этим справиться?


person gabor.orosz    schedule 28.10.2012    source источник
comment
ОБНОВЛЕНИЕ: Решено, мне пришлось использовать batchUpdate вместо reloadData в методе textFieldShouldReturn.   -  person gabor.orosz    schedule 29.10.2012


Ответы (1)


Решено, мне пришлось использовать batchUpdate вместо reloadData в методе textFieldShouldReturn.

person gabor.orosz    schedule 29.10.2012
comment
performBatchUpdate:completion: — это вызов метода для UICollectionView - person Alex Cio; 07.03.2014