如何在 tableview 中获取 youtube 嵌入视频并在处理“完成”按钮时遇到问题

Posted

技术标签:

【中文标题】如何在 tableview 中获取 youtube 嵌入视频并在处理“完成”按钮时遇到问题【英文标题】:How to Get the youtube embedded video in tableview and getting the issue in handling "Done"Button 【发布时间】:2012-05-18 20:55:53 【问题描述】:

如何在UITableViewCell 中获取YouTube 视频,以及如何处理UIWebView 播放视频的Done 按钮?

我已将视频嵌入到视图中,但就像在图像上一样。我想要这张图片中的Done-按钮:

我想在返回视图时打开另一个屏幕,而不是前一个视图。

-(void)viewDidLoad 
    [super viewDidLoad];
    videoURL = [[NSString alloc]init];
    videoURL =@"http://www.youtube.com/watch?v=aE2b75FFZPI";
    [self embedYouTube:videoURL frame:CGRectMake(10, 85, 300, 180)];



- (void)embedYouTube:(NSString*)url frame:(CGRect)frame   
    NSString* embedhtml = @"\ <html><head>\ <style type=\"text/css\">\ body \ background-color: transparent;\ color: red;\ \ </style>\ </head><body style=\"margin:0\">\ <embed id=\"yt\" src=\"%@\" type=\"application/x-shockwave-flash\" \ width=\"%0.0f\" height=\"%0.0f\"></embed>\ </body></html>";  
    NSString* html = [NSString stringWithFormat:embedHTML, url, frame.size.width, frame.size.height];  
    if (videoView == nil)   
        videoView = [[UIWebView alloc] initWithFrame:frame];  
        [self.view addSubview:videoView];  
        NSLog(@"html%@",html);
      

    [videoView loadHTMLString:html baseURL:nil];  

我需要一些帮助。我进行了搜索,但没有得到任何东西。

【问题讨论】:

我对您的理解是否正确 - 您希望您的表格视图单元格代表每个 youtube 视频?全屏?你为什么要这么做? 我完成了表格并想知道如何处理 youtube 视频完成按钮? 完成按钮没有显示?还是只是不回应?您是否尝试过完成按钮通知? ***.com/a/8228490/894671 @GuntisTreulands 实际上我已经播放了 youtube 视频,例如 [self.webView loadHTMLString:content baseURL:baseURL];当点击它时它会在视图上出现 @GuntisTreulands 是否发送通知 [videoView loadHTMLString:html baseURL:nil] 已加载到屏幕上 【参考方案1】:

由于这个问题暂时没有得到答复,我想我可以提供一个建议。我相信最终结果与您正在寻找的结果相同,但到达那里的路径略有不同。

因此,据我了解,您希望 UITableView 控制器显示当您单击它们时播放的 YouTube 视频列表。以下是我在我的一个应用程序中处理这种情况的方法。

    您需要获取列表中所需视频的 RSS 提要。这很简单……如果是针对用户,格式为 http://www.youtube.com/rss/user/USERNAME/videos.rss 因此,您需要从那里将 RSS 提要解析为具有标题、描述、缩略图和视频链接的对象列表。所有这些都在 RSS 中提供,我使用 NSXMLParser 来完成这项工作。 一旦您有一个很好的值对象列表可供使用,您需要做的就是让表触发 MPMoviePlayerViewController 并将 URL 传递给它以播放电影。

didSelectRowAtIndexPath 实现

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    /** self.items is just a mutable array of video objects that is the underlying 
        datasource for the table.  The Video object is just a simple value object 
        I created myself */
    Video *video = [self.items objectAtIndex:[indexPath row]];

    MPMoviePlayerViewController *mp = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:video.video]];

    [self presentMoviePlayerViewControllerAnimated:mp];

    [mp release];

这是我的 Video 类的界面的样子

@interface Video : NSManagedObject 

@property (nonatomic, retain) NSString * title;
@property (nonatomic, retain) NSString * link;
@property (nonatomic, retain) NSString * comments;
@property (nonatomic, retain) NSString * thumbnail;
@property (nonatomic, retain) NSString * pubDate;
@property (nonatomic, retain) NSString * video;
@property (nonatomic, retain) NSString * guid;
@property (nonatomic, retain) NSString * desc;

@end

差不多就是这样,一个在 UITableViewController 中显示 YouTube 视频的好方法。我不会进入 XML 解析,那里有大量关于如何做到这一点的文档。我只是快速地谷歌了一下,这个博客实际上进入了我正在谈论的细节:

http://useyourloaf.com/blog/2010/10/16/parsing-an-rss-feed-using-nsxmlparser.html

希望这能让你继续前进。我知道这并没有解决将标记放在 WebView 中的问题,但我认为您会发现这种方式更直观,并且由于没有太多响应......希望它能让您启动并运行。

【讨论】:

【参考方案2】:

您想要做的事情涉及弄乱 UIWebView 使用的媒体播放器。这可以通过监视 uiviewanimation 通知然后通过一堆子视图来完成,但它会涉及使用私有方法,因此不建议特别推荐,因为私有媒体播放器的行为方式会随每个操作系统而变化。我建议使用 jerrylroberts 的答案并获得 YouTube 视频的直接链接。

【讨论】:

以上是关于如何在 tableview 中获取 youtube 嵌入视频并在处理“完成”按钮时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 Alamofire 在 tableview 中操作 YouTube 播放列表 API

将数组加载到 TableView xCode

如何在 YouTube api v3 中获取 YouTube 视频的 cc 字幕

Youtube - 如何获取 youtube 频道中的视频列表并将其显示为列表?

如何在 jQuery 中获取 Youtube 视频?

如何在android webview中获取完成youtube视频的事件