Próbuję dodać a UIRefreshControl
do UICollectionView
, ale problem polega na tym, że formant odświeżania nie pojawia się, chyba że widok kolekcji wypełnia wysokość jego kontenera nadrzędnego. Innymi słowy, o ile widok kolekcji nie jest wystarczająco długi, aby wymagać przewijania, nie można go wyciągnąć w dół, aby wyświetlić widok kontrolki odświeżania. Gdy tylko kolekcja przekroczy wysokość swojego kontenera nadrzędnego, jest rozwijana w dół i ujawnia widok odświeżania.
Skonfigurowałem szybki projekt na iOS z tylko UICollectionView
wewnętrznym widokiem głównym, z wyjściem do widoku kolekcji, aby móc dodać UIRefreshControl
do niego viewDidLoad
. Istnieje również komórka prototypowa z identyfikatorem ponownego wykorzystaniacCell
To jest cały kod kontrolera, który całkiem dobrze pokazuje problem. W tym kodzie ustawiłem wysokość komórki na 100, co nie wystarczy do wypełnienia ekranu, dlatego widok nie może zostać wyciągnięty, a kontrolka odświeżania się nie pokaże. Ustaw go na coś wyższego, aby wypełnić ekran, a potem zadziała. Jakieś pomysły?
@interface ViewController () <UICollectionViewDelegateFlowLayout, UICollectionViewDataSource>
@property (strong, nonatomic) IBOutlet UICollectionView *collectionView;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[self.collectionView addSubview:refreshControl];
}
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
return 1;
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return 1;
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
return [collectionView dequeueReusableCellWithReuseIdentifier:@"cCell" forIndexPath:indexPath];
}
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
return CGSizeMake(self.view.frame.size.width, 100);
}
alwaysBounceVertical