将UICollectionView添加到UIView

时间:2016-07-16 19:56:33

标签: objective-c uiview uicollectionview nib

我已经尝试搜索与此问题相关的Stack Overflow问题,但似乎无法理解我做错了什么。我有一个UIView是xib。我用它作为地图注释标注。我希望在此callout xib中有一个UICollectionView。所以我在xib中添加了一个UICollectionView,因为它不允许在UICollectionView中添加一个单元格,当它在UIView内部时,我用xib为我的单元格创建了自己的类对于细胞。

我一直在与'*** Assertion failure in -[UICollectionView _dequeueReusableViewOfKind:withIdentifier:forIndexPath:viewCategory:]'.

崩溃

我目前将UIView作为collectionView的dataSource和delegate。

提前致谢。

 //UIView
 **MapAnnotationCallout.m File**

    -(id)initWithFrame:(CGRect)frame {

 //'mediaPreviewCell' is my custom cell
[_mediaCollectionView registerNib:[UINib nibWithNibName:@"MediaPreviewCell" bundle:nil] forCellWithReuseIdentifier:@"mediaCell"];

_mediaCollectionView.backgroundColor = [UIColor clearColor];

self = [super initWithFrame:frame];
if (self) {

    _previewImages = [[NSMutableArray alloc]initWithObjects:[UIImage imageNamed:@"belleIsle-1"], [UIImage imageNamed:@"belleIsle-2"], [UIImage imageNamed:@"old_english_D"], nil];

    [[NSBundle mainBundle]loadNibNamed:@"MapAnnotationCalloutView" owner:self options:nil];

    self.bounds = _view.bounds;

    [self addSubview:_view];

}
return self;
}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
return [_previewImages count];
}

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {

return CGSizeMake(80, 80);
}

- (MediaPreviewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{

 *******crashing on this line with exception breakpoint************

MediaPreviewCell *cell = [_mediaCollectionView dequeueReusableCellWithReuseIdentifier:@"mediaCell" forIndexPath:indexPath];

 ******************************************    

cell.cellImage.image = [_previewImages objectAtIndex:indexPath.item];

return cell;

}

1 个答案:

答案 0 :(得分:0)

我发现了问题所在。在我为地图标注加载nib之前,我正在为UICollectionViewCell注册nib。因此,在创建包含UICollectionView的标注之前,它尝试创建单元并将其放在UICollectionView中。此外,我在单元格上为我的UIImageView连接了一个插座,并试图以这种方式设置图像。相反,我只是给imageView一个标签,并在< cellForItemAtIndexPath'中设置图像。方法。现在效果很好。

#about img {
  margin: 0 auto;
}

a{
vertical-align:top;
display:block;
margin-top:-430px
}

.imgAbout {
  background: #d5d5d5;
  text-align: center;
  margin-top:20px;
 }

.imgAbout img {
  opacity: 1;
  transition: opacity .25s ease-in-out;
  -moz-transition: opacity .25s ease-in-out;
  -webkit-transition: opacity .25s ease-in-out;
}



.imgAbout img:hover {
   opacity: 0.4;
}
h1,h3{
  position:relative;
  top:400px;
}