嗨我想在单元格完全可见时在UITableView中播放视频URL。 怎么可能?
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"SimpleTableCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
//Play the movie now
NSURL *videoURL =[NSURL fileURLWithPath:myURL];
MPMoviePlayerViewController *videoPlayerView = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL];
videoPlayerView.moviePlayer.fullscreen=TRUE;
[self presentMoviePlayerViewControllerAnimated:videoPlayerView];
[videoPlayerView.moviePlayer play];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
return cell;
}
答案 0 :(得分:0)
您可以在
上准备视频- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
在cellForRowAtIndexPath方法中,通过使用
编译索引路径来检查当前单元格是否可见NSArray *visiblePaths = [tableView indexPathsForVisibleRows];
如果是,则播放即使不停止播放。根据视频和视频数量,您可以使用一些缓存机制扩展此方法。如果您认为在willDisplayCell上加载视频会延迟,则可以预加载所有视频。
帮助函数查找单元格是否可见。您可以在cellForRowatIndexpath中调用此函数。
- (BOOL)isIndexPathVisible:(NSIndexPath*)indexPath
{
NSArray *visiblePaths = [self.tableView indexPathsForVisibleRows];
for (NSIndexPath *currentIndex in visiblePaths)
{
NSComparisonResult result = [currentIndex compare:currentIndex];
if(result == NSOrderedSame)
{
NSLog(@"Visible");
return YES;
}
}
return NO;
}