0

我有一个tableView列出包含 jpg 和 mp4 文件的内容目录。

目前,当您选择任何 mp4 文件时,它会加载MPMovieController并相应地播放正确的文件,但是如果文件的扩展名是 JPG,我不确定如何加载详细视图。

例如,如果在 中选择的文件tableView是图像文件,它会在 中打开一个imageViewdetailView显示该图像。

对于其他文件,它会推送alertView关于它是未知文件的信息。

这是我到目前为止的代码tableview didSelectRowAtIndex

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

{static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView
                         dequeueReusableCellWithIdentifier:CellIdentifier];


NSString *urlString = [NSString stringWithFormat:@"http://10.1.4.3:8080/DCIM/DCIM/VIDEO/%@",[movieArray objectAtIndex:indexPath.row]];

//Play multiple video
NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

_moviePlayer =  [[MPMoviePlayerController alloc]
                 initWithContentURL:url];

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(moviePlayBackDidFinish:)
                                             name:MPMoviePlayerPlaybackDidFinishNotification
                                           object:_moviePlayer];

_moviePlayer.controlStyle = MPMovieControlStyleDefault;
_moviePlayer.shouldAutoplay = YES;
[self.view addSubview:_moviePlayer.view];
[_moviePlayer setFullscreen:YES animated:YES];}

任何链接或源代码都会非常方便。

谢谢。

4

2 回答 2

0

因为您使用 MPMoviePlayerController,所以 xcode 将处理您的文件(它将创建播放电影的视图并在完成后关闭视图)。

如果要显示图像,只需使用关闭按钮创建自定义视图(因为您需要关闭视图)。在这个自定义视图中,添加一个 UIImageView 并显示您的图像。

于 2013-05-28T08:41:41.213 回答
0

我没有测试这段代码,因为我没有时间

但是,它应该可以工作。

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

{  
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView
                             dequeueReusableCellWithIdentifier:CellIdentifier];

    /* ============================== THIS DO THE TRICK ============================ */
    NSString *kind = nil;
    NSString *path = [NSString stringWithFormat:@"http://10.1.4.3:8080/DCIM/DCIM/VIDEO/%@", [movieArray objectAtIndex:indexPath.row]];
    NSString *ext = [[path pathExtension] lowercaseString];

    if([ext isEqualToString:@"jpg"] || [ext isEqualToString:@"png"] || [ext isEqualToString:@"jpeg"]) {
        UIViewController *imageController = [[UIViewController alloc] init];
        UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:path]]]];

        CGRect frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);

        [imageController.view setFrame:frame];
        [imageView setFrame:frame];
        [imageController.view addSubview:imageView];
        [imageView release];

        [self presentModalViewController:imageController animated:TRUE];

        [imageController release];
    }
    /* ============================================================================= */
    else {
        NSString *urlString = path;

        //Play multiple video
        NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

        _moviePlayer =  [[MPMoviePlayerController alloc]
                         initWithContentURL:url];

        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(moviePlayBackDidFinish:)
                                                     name:MPMoviePlayerPlaybackDidFinishNotification
                                                   object:_moviePlayer];

        _moviePlayer.controlStyle = MPMovieControlStyleDefault;
        _moviePlayer.shouldAutoplay = YES;
        [self.view addSubview:_moviePlayer.view];
        [_moviePlayer setFullscreen:YES animated:YES];
    }
}
于 2013-05-28T10:25:58.100 回答