В моем приложении я использую PSCollectionView для создания пользовательского коллекционного представления. Я все данные, готовые создать представление, но когда я выполняю код не вызывается методPSCollectionView не выполняет cellForRowAtIndex
- (PSCollectionViewCell *)collectionView:(PSCollectionView *)collectionView cellForRowAtIndex:(NSInteger)index`
я искал на StackOverflow, и я вижу, что другой человек имеет те же проблемы (link), но Я не понимаю, как он решил, поэтому решил написать вопрос, чтобы понять, как назвать этот метод. Я надеюсь, что есть кто-то, кто может помочь мне найти способ решить эту проблему.
UPDATE:
Вот viewDidLoad
код:
- (void)viewDidLoad
{
[super viewDidLoad];
tempArray = [[NSMutableArray alloc]init];
self.navBar.title = self.category;
NSString *stringUrl = [NSString stringWithFormat:@"http://54.204.6.246/magento8/api/rest/products/?category_id=%d", self.categoryId];
[self sendRequestToURL:stringUrl withMethod:@"GET"];
// Inizio sezione di codice per la creazione della PSCOLLECTIONVIEW
psView = [[PSCollectionView alloc]init];
// Imposto il delegato per la gestione della scrollView
psView.delegate = self;
// Imposto il delegato per la collection view
psView.collectionViewDelegate = self;
// Imposto il delegato per il data source della collection view
psView.collectionViewDataSource = self;
psView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
// Controllo il tipo di device e a seconda del dispositivo trovato creo le colonne e le righe
if ([[UIDevice currentDevice].model isEqualToString:@"iPhone"]) {
psView.numColsPortrait = 2;
psView.numColsLandscape = 4;
} else {
psView.numColsPortrait = 2;
psView.numColsLandscape = 4;
}
// Aggiungo la vista appena creata
[self.view addSubview:psView];
}
А вот код делегата:
#pragma mark - PSCollection Delegate e Data Source
- (NSInteger)numberOfRowsInCollectionView:(PSCollectionView *)collectionView {
return [self.arrayWithData count];
}
- (CGFloat)collectionView:(PSCollectionView *)collectionView heightForRowAtIndex:(NSInteger)index {
// NSDictionary *item = [self.arrayWithData objectAtIndex:index];
//
// return [ProductViewCell heightForViewWithObject:item inColumnWidth:psView.colWidth];
return 100.0f;
}
- (PSCollectionViewCell *)collectionView:(PSCollectionView *)collectionView cellForRowAtIndex:(NSInteger)index {
ProductViewCell *cell = (ProductViewCell *)[psView dequeueReusableViewForClass:nil];
if (!cell) {
cell = [[ProductViewCell alloc]initWithFrame:CGRectZero];
}
cell.labelName.text = [[self.arrayWithData objectAtIndex:index]objectForKey:@"name"];
NSURL * url = [NSURL URLWithString:[[self.arrayWithData objectAtIndex:index]objectForKey:@"url"]];
[cell.productImage setImageWithURL:url
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
//[[[SDWebImageManager sharedManager] imageCache] removeImageForKey:yacht.thumbnail fromDisk:NO];
[[[SDWebImageManager sharedManager] imageCache] clearMemory];
}];
return cell;
}
Спасибо за ответ, я установил весь делегат, как это записано в документации Git, затем я проверяю, сколько строк и когда я пишу 'NSLog' Я видел, что он возвращает 2, не знаю, почему он не вызывает коллекцию Collection Collection: (PSCollectionViewCell *): (PSCollectionView *) collectionView cellForRowAtIndex: (NSInteger) index'. Вызывается два других метода делегата. Другой человек, у которого такая же проблема, говорит, что я должен установить кадр экземпляра PSCollectionView, но как я могу это сделать? – lucgian841
Я обновил свой ответ. – Kuba
СПАСИБО !!! Я вижу рамку! Теперь я должен установить правильную информацию в этих ячейках. – lucgian841