如何防止小区的avplayer - Tableview重新初始化

时间:2017-04-20 11:55:39

标签: ios uitableview

我陷入了一个大问题。 我有一个tableview,其中有videoplayer - AVPlayer 我有10个单元格,每个都播放视频。但问题是,当我 滚动tableview播放器重新初始化和视频播放 start。我想阻止这种重新初始化并播放像twitter这样的视频 当我们离开的时候玩哪个代码应该尝试?我尝试了多个代码,但没有成功

    Code is here

    if (Arr_avPlayer.count > indexPath.row){
        Cell_TVC * cell = (Cell_TVC *)[Arr_avPlayer 
      objectAtIndex:indexPath.row];
        return cell;
    }

     //    Cell_TVC *cell = (Cell_TVC *)[tableView 
        dequeueReusableCellWithIdentifier:@"Cell_TVC" 
        forIndexPath:indexPath];

         **Cell_TVC *cell = [[Cell_TVC alloc] init];**

           //    Cell_TVC *cell =  [tableView 

                 dequeueReusableCellWithIdentifier:@"Cell_TVC"];
          //    if (!cell) {
          //        cell = [[Cell_TVC 

                 alloc]initWithStyle:UITableViewCellStyleDefault 
                         reuseIdentifier:@"Cell_TVC"];
         //              
         //    }



      AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:[NSURL 
      fileURLWithPath:[self filepath:[myIntegers 
      objectAtIndex:indexPath.row]]] options:nil];

      cell.avPlayerItem = [[AVPlayerItem alloc] initWithAsset:asset];
      cell.avPlayer = [[AVPlayer alloc] 
      initWithPlayerItem:cell.avPlayerItem];

    cell.avPlayerLayer =  [[AVPlayerLayer alloc] init];
    cell.avPlayerLayer = [AVPlayerLayer 
    playerLayerWithPlayer:cell.avPlayer];
    cell.lblTime.text = @"0.0";

    CGRect contentViewFrame = cell.contentView.frame;
    contentViewFrame.origin.x = 0;
    contentViewFrame.origin.y = 25;
    contentViewFrame.size.width = APP_width;
    contentViewFrame.size.height = APP_width * 0.55;
    cell.contentView.frame = contentViewFrame;
    cell.contentView.backgroundColor = [UIColor redColor];

    UILabel *lbl = [[UILabel 
     alloc]initWithFrame:CGRectMake((cell.contentView.frame.size.width / 2 
    ) - 100, contentViewFrame.size.height + 10, 200, 100)];

    //lbl.text = [NSString stringWithFormat:@"%02f:%02f", dMinutes11, 
                 dSeconds11];

    lbl.tag = indexPath.row;

    [cell.avPlayerLayer setFrame:cell.contentView.frame];
    [cell.contentView.layer addSublayer:cell.avPlayerLayer];

    [Arr_avPlayer insertObject:cell atIndex:indexPath.row];
    [cell.contentView addSubview:lbl];


    if i write the cell like below

    Cell_TVC *cell = [[Cell_TVC alloc] init];

     i am not able to acess the property of cell and when i use like 
    below

     if (!cell)
     {
               cell = [[Cell_TVC 
                 alloc]initWithStyle:UITableViewCellStyleDefault 
                 reuseIdentifier:@"Cell_TVC"];

     }

播放器索引更改和视频获取更改其索引 如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果您正在使用UItableview,其行为明显。 UItableview不要将所有单元格保留在内存中。当单元格从屏幕上消失时,tableview将其删除并在向下/向上滚动时再次添加(当新单元格出现在屏幕上时)。 您无法更改UItableview的此行为。

有可用的丑陋解决方案:哪个是将您的tableview调整为height = HeightOfCell * numberOfCell.,但不建议这样做。因为这可能会造成记忆问题。

更好的解决方案是跟踪寻求时间。您可以使用didEndDisplayingCell存储Player中当前搜索时间的值,该值将删除。当再次出现该索引路径的单元格(cellforrow)时,您可以搜索玩家存储的值。