2016-04-29 62 views
0

cell.imageviewプロパティが表示されない理由を把握するのに苦労しています。imageUIImageはゼロではなく、セルが作成されます。セルに背景を割り当てると、collectionviewとセルを正しく作成していることが証明されます。プログラムで私のcollectionviewを作成し、IBを使用しないでください。interface builder。これまで何度もやったことがありますが、私は本当にこの頭で頭を傷つけています。プログラムで作成されたコレクションビューで画像ビューが表示されない

ありがとうございます。

@interface MainViewController : UIViewController 

    @property(strong, nonatomic) UICollectionView *collectionView; 

    @end 

    @interface MainViewController()< 
    UICollectionViewDataSource, UICollectionViewDelegate, 
    UICollectionViewDelegateFlowLayout, UIGestureRecognizerDelegate> 

    @property(nonatomic, strong) MHTransitionShowDetail *interactivePushTransition; 
    @property(nonatomic) CGPoint lastPoint; 
    @property(nonatomic) CGFloat startScale; 
    @property(strong, nonatomic) NSMutableArray *carImages; 

    @end 

    @implementation MainViewController 

    - (instancetype)init { 
     self = [super init]; 
     if (self) { 
     } 
     return self; 
    } 

    - (void)viewDidLoad { 
     [super viewDidLoad]; 
     // Do any additional setup after loading the view, typically from a nib. 

     _carImages = [@[ 
     @"chevy_small", 
     @"mini_small", 
     @"rover_small", 
     @"smart_small", 
     @"highlander_small", 
     @"venza_small", 
     @"volvo_small", 
     @"vw_small", 
     @"ford_small", 
     @"nissan_small" 
     ] mutableCopy]; 

     self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

     UICollectionViewFlowLayout *layout = 
      [[UICollectionViewFlowLayout alloc] init]; 
     layout.itemSize = CGSizeMake(106, 106); 
     layout.minimumLineSpacing = 1.0; 
     layout.minimumInteritemSpacing = 1.0; 
     self.collectionView = [[UICollectionView alloc] initWithFrame:self.view.frame 
               collectionViewLayout:layout]; 
     [self.collectionView setDataSource:self]; 
     [self.collectionView setDelegate:self]; 
     self.collectionView.alwaysBounceVertical = YES; 
     [self.collectionView setContentInset:UIEdgeInsetsMake(20, 10, 10, 10)]; 
     [self.collectionView registerClass:[IKGCollectionViewCell class] 
       forCellWithReuseIdentifier:@"myCell"]; 
     self.collectionView.backgroundColor = [UIColor whiteColor]; 
     [self.view addSubview:self.collectionView]; 
    } 

    - (void)didReceiveMemoryWarning { 
     [super didReceiveMemoryWarning]; 
     // Dispose of any resources that can be recreated. 
    } 

    #pragma CollectionView & FlowLayout methods 

    - (CGSize)collectionView:(UICollectionView *)collectionView 
         layout:(UICollectionViewLayout *)collectionViewLayout 
     sizeForItemAtIndexPath:(NSIndexPath *)indexPath { 
     return CGSizeMake(120, 120); 
    } 


    - (NSInteger)collectionView:(UICollectionView *)collectionView 
     numberOfItemsInSection:(NSInteger)section { 
     return self.carImages.count; 
    } 

    - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView 
         cellForItemAtIndexPath:(NSIndexPath *)indexPath { 
     IKGCollectionViewCell *cell = 
      [collectionView dequeueReusableCellWithReuseIdentifier:@"myCell" 
                forIndexPath:indexPath]; 
     long row = [indexPath row]; 
     UIImage *image = [UIImage imageNamed:self.carImages[row]]; 
     cell.imageView.userInteractionEnabled = YES; 
     cell.imageView.image = image; 
     NSLog(@"cell.image view %@", image); 
     // [self makeCell:(IKGCollectionViewCell *)cell atIndexPath:indexPath]; 

     return cell; 
    } 
} 
@end 

@interface IKGCollectionViewCell : UICollectionViewCell 
@property(nonatomic, strong) UIImageView *imageView; 

@end 


@implementation IKGCollectionViewCell 
- (id)initWithFrame:(CGRect)frame { 
    self = [super initWithFrame:frame]; 
    if (self) { 
    self.imageView = [[UIImageView alloc] initWithFrame:self.bounds]; 
    NSLog(@"self.bounds is %@", NSStringFromCGRect(self.bounds)); 
    } 
    return self; 
} 

- (void)layoutSubviews { 
    [super layoutSubviews]; 
    self.imageView.frame = self.contentView.bounds; 
} 

@end 

答えて

2

セルのimageViewをサブビューとして追加していませんでした。セルのinitWithFrame

- (id)initWithFrame:(CGRect)frame { 
    self = [super initWithFrame:frame]; 
    if (self) { 
     self.imageView = [[UIImageView alloc] initWithFrame:self.bounds]; 
     //Add imageView as subview 
     [self addSubview:self.imageView]; 
     NSLog(@"self.bounds is %@", NSStringFromCGRect(self.bounds)); 
    } 
    return self; 
} 
でそう

関連する問題