У меня есть UICollectionView, каждая из ячеек которого содержит продукт.
Поскольку я загружаю изображения по запросу, чтобы сохранить низкую пропускную способность, я хочу обновить UICollectionViewCell после завершения загрузки с изображением продукта вместо заполнитель.
Итак, у меня есть следующее:
Продукт.ч
@class Product;
@protocol CWProductDelegate
-(void)CWProductDidFinishLoadingImages:(Product *)product;
@end
@interface Product : NSManagedObject
@property (nonatomic, retain) NSData * bottleImage;
@property (nonatomic, retain) NSData * bottleImage2x;
@property (nonatomic, strong, getter = chooseBottleImage) NSData * stdBottleImage;
@property (nonatomic, retain) NSNumber * isAvailable;
@property (nonatomic, retain) NSData * labelImage;
@property (nonatomic, retain) NSData * labelImage2x;
@property (nonatomic, strong, getter = chooseLabelImage) NSData * stdLabelImage;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * origin;
@property (nonatomic, retain) NSData * pourImage;
@property (nonatomic, retain) NSData * pourImage2x;
@property (nonatomic, strong, getter = choosePourImage) NSData * stdPourImage;
@property (nonatomic, retain) NSDecimalNumber * price;
@property (nonatomic, retain) NSString * productCode;
@property (nonatomic, retain) NSString * productDescription;
@property (nonatomic, retain) NSString * scent;
@property (nonatomic, retain) NSString * setting;
@property (nonatomic, retain) NSString * vintage;
@property (nonatomic, retain) NSString * wineType;
@property (nonatomic, retain) NSString * varietal;
@property (nonatomic, retain) NSManagedObject *lineitem;
@property (nonatomic, retain) NSSet *merchantViews;
@property (nonatomic, weak) id <CWProductDelegate> delegate;
@end
@interface Product (CoreDataGeneratedAccessors)
+ (void)manage:(Product *)product merchantViews:(NSArray *)merchantViews;
+ (NSArray *)redWines;
+ (NSArray *)whiteWines;
+ (NSArray *)whiteRecommendations;
+ (NSArray *)redRecommendations;
- (void)addMerchantViewsObject:(NSManagedObject *)value;
- (void)removeMerchantViewsObject:(NSManagedObject *)value;
- (void)addMerchantViews:(NSSet *)values;
- (void)removeMerchantViews:(NSSet *)values;
- (void)getProductImages;
- (void)fetchRetinaImages;
@end
CWProductCell.h
@interface CWProductCell : UICollectionViewCell <CWProductDelegate>
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@property (weak, nonatomic) IBOutlet UILabel *productName;
@property (strong, nonatomic) Product *product;
-(void)setLabelText:(NSString *)text;
-(void)addImagesToScrollView;
@end
(Материал CollectionView)
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
CWProductCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"ProductCell" forIndexPath:indexPath];
if (indexPath.row < _redRecommendations)
{
Product *product = _redWineArray[indexPath.row];
[product setDelegate:cell];
####### THIS IS WHERE THE EXCEPTION IS RISED#####
cell.product = product;
cell.productName.text = cell.product.name;
[cell addImagesToScrollView];
} else {
Product *product = _whiteWineArray[indexPath.row - _redRecommendations];
cell.product = product;
cell.productName.text = cell.product.name;
[cell addImagesToScrollView];
}
UITapGestureRecognizer *tapCell = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapCell:)];
[cell.scrollView addGestureRecognizer:tapCell];
return cell;
}
Я получаю следующую ошибку:
-[Product setDelegate:]: нераспознанный селектор отправлен экземпляру 0x995f350.
Product
класс? Я считаю, чтоunrecognized selector
означает, что объект, которому вы отправляете сообщение, не имеет метода с таким именем. (В вашем классеProduct
нет методаsetDelegate:
). - person nhgrif   schedule 10.10.2013