如何在 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
如何在 YouTube api v3 中获取 YouTube 视频的 cc 字幕