我在集合视图单元格中播放视频时遇到问题
我使用了以下代码。
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
//[self.collection reloadData];
homeceeCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];
UIImage *image;
NSInteger row = [indexPath row];
NSURL *furl;
NSLog(@"indexpath = %ld", (long)row);
if ([app.array1[row] isKindOfClass:[NSURL class]])
{
furl=app.array1[row];
cell.movieplayer = [[MPMoviePlayerController alloc]initWithContentURL:app.array1[row]];
cell.videoview.hidden=NO;
cell.img.hidden=YES;
cell.movieplayer.view.frame = cell.img.frame;
[cell.videoview addSubview:cell.movieplayer.view];
NSLog(@"%@",cell.movieplayer);
[cell.movieplayer play];
NSLog(@"%@",cell.movieplayer);
}
else {
if ([app.array1[row] isKindOfClass:[UIImage class]]) {
image= app.array1[row];
cell.videoview.hidden=YES;
}
else {
image = [UIImage imageNamed:app.array1[row]];
cell.videoview.hidden=YES;
}
cell.img.image = image;
cell.videoview.hidden=YES;
}
cell.text.text=[app.tarray1 objectAtIndex:indexPath.row];
return cell;
}
请帮我解决这个问题,如果问题不明确请留言我会解释。谢谢你的回答
答案 0 :(得分:0)
创建UICollectionViewCell
子类,然后您应该覆盖prepeareForReuse
方法 - 将单元格设置为默认模式并删除所有视频播放器内容。在cellForItemAtIndexPath
方法中使用您的子类。
<强>夫特强>:
override func prepareForReuse() {
super.prepareForReuse()
//set cell to initial state here
}
Objective-C :
- (void) prepareForReuse
{
[super prepareForReuse];
//set cell to initial state here
}
您可以在UICollectionReusableView课程参考中找到更多信息。
执行必要的清理以准备视图以便再次使用。
当视图出列以供使用时,在相应的dequeue方法将视图返回到代码之前调用此方法。子类可以覆盖此方法并使用它将属性重置为其默认值,并且通常使视图可以再次使用。