UITableViewCell中的多个视频播放问题

时间:2013-05-07 05:16:57

标签: iphone ios uitableview mpmovieplayercontroller

在我的应用中,我正在尝试在UITableViewCell中播放多个视频,我正在使用MPMoviePlayerController播放视频时没有任何问题。但是它一次播放一个视频而在其他单元格中我得到黑屏,假设第一次有一个单元格可见它播放视频但是当我滚动第二行时,第一个单元格视频视图会随着黑屏消失。即使我滚动表视图,我也无法看到如何使所有视频视图可见。这是我在自定义单元格中播放视频时使用的代码:

自定义单元格初始化:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self){
        NSArray *nibArray=[[NSBundle mainBundle]loadNibNamed:@"CustomCell" owner:self options:nil];
        self=[nibArray objectAtIndex:0];

        _player = [[MPMoviePlayerController alloc] init];
        _player.view.frame = CGRectMake(0,0,320,300);
        _player.movieSourceType = MPMovieSourceTypeStreaming;
        [_player setContentURL:[NSURL URLWithString:@"http://files.parse.com/ef5649ee-75c6-4c76-ba3b-37be4d281125/b35589f7-c0aa-4ca8-9f7c-fd31b2dc8492-vedioTeaser.mov"]];
        [_player prepareToPlay];
        [_player play];
        [self addSubview:_player.view];
    }
    return self;
}

CellForRowAtIndexPath方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if(cell == nil){
        cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }else{
        [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:[NSIndexPath indexPathForRow:indexPath.row inSection:indexPath.section], nil] withRowAnimation:UITableViewRowAnimationAutomatic];
    }

    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    return cell;
}

任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:10)

您可以使用AVFoundation framework同时播放多个视频。 有关如何执行此操作的详细步骤和完整源代码:multiple-video-playback-on-ios

您无法使用MPMoviePlayerControllerdocumentation明确表示......

  

虽然您可以创建多个MPMoviePlayerController对象并在界面中显示其视图,但一次只能有一个电影播放器​​可以播放其电影。

希望它可以帮到你。