自定义单元格中的 MPMoviePlayerViewController

Posted

技术标签:

【中文标题】自定义单元格中的 MPMoviePlayerViewController【英文标题】:MPMoviePlayerViewController in a custom cell 【发布时间】:2013-12-19 09:31:45 【问题描述】:

我有一个带有新闻提要屏幕的应用程序,例如 facebook 应用程序中的应用程序。为此,我制作了一个自定义单元格,它有一个contentView,即UIView。此 contentView 被初始化以显示文本、图像或视频。这是在自定义单元格的类中完成的。对于视频,我正在尝试将 MPMoviePlayerViewController 作为子视图添加到单元格的 contentView:

MPMoviePlayerViewController *player = [[MPMoviePlayerViewController alloc] initWithContentURL:nil];
player.view.frame = self.contentView.frame;
player.view.tag = kVideoView;
[self.contentView addSubview:player.moviePlayer.view];

然后,当我在 tableviewcontroller 中加载该单元格时,我想给它 contentURL,如下所示:

MPMoviePlayerViewController *controller = (MPMoviePlayerViewController *)[cell viewWithTag:kVideoView];
controller.moviePlayer.contentURL = [NSURL URLWithString:postInfo.uri];
return;

这会使应用程序崩溃并出现错误:

-[MPMovieView moviePlayer]: unrecognized selector sent to instance

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

当您将player.moviePlayer.view 添加到内容视图时。

因此,在检索时,您将获得对 player.moviePlayer.view 的引用,而不是 MPMoviePlayerViewController

我的建议是不要创建多个 MPMoviePlayerViewController 实例。您可以在带有特定视频快照的单元格上添加一些UIButtonUIImageView。只有在播放时,您才能创建MPMoviePlayerViewController 实例并播放您的视频

【讨论】:

我知道这就是正在发生的事情,我只是想知道如何解决它:) 解决方法是按照 Bhumeshwer katre 所说的去做。不要将电影加载到每个单元格中。只需加载一个有代表性的 UIImage 或播放图标。然后,当您的用户点击它时,您可以创建一个新的 MPMoviePlayerController 来播放您的电影。如果您想在每个表格行单元格中播放电影流(我认为这不是一个好主意),那么您最好看看 AVPlayer。 很好的答案,谢谢!我正在做类似的事情。我在每个单元格中创建了一个MPMoviePlayerViewController 的实例,但它的运行肯定没有我想要的那么顺利。 @SuperKevin 我已经在每个单元格上创建了​​ playImage 现在我想知道如何将 MPMoviePlayerViewController 设置为 collectionView 以及何时按下播放视频?

以上是关于自定义单元格中的 MPMoviePlayerViewController的主要内容,如果未能解决你的问题,请参考以下文章

Swift:自定义单元格中的 IBoutlets 为零

如何区分自定义单元格中的两个文本字段?

自定义单元格中的 UIImageView 无法正常工作

自定义单元格中的 UILabel 不会动态增加高度

自定义表格单元格中的堆栈视图

根据获得的当前单元格的索引路径,自定义单元格中的按钮单击功能