2013-05-28 33 views
0

我有一個tableView它列出了包含jpg和mp4文件的內容目錄。iPhone - UITableView到DetailView

當前當您選擇任何mp4文件時,它會加載MPMovieController並相應播放正確的文件,但如果文件的擴展名爲JPG,我不確定如何加載詳細視圖。

例如,如果tableView中選定的文件是圖像文件,它將在detailView中打開imageView以顯示該圖像。

對於其他文件,它推送一個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];} 

任何鏈接或源代碼將是非常方便的。

謝謝。

+0

這意味着您不知道在加載單元格時單元格可以包含的文件類型? –

+0

@RatikantaPatra單元顯示正確,mp4文件正在加載,但是我需要它在選擇JPG時轉到詳細視圖。 – teejay

+0

你需要有你自己的定製詳細視圖,其中將包含一個imageView裏面保存相應的JPG圖像。 –

回答

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]; 
    } 
} 
+0

它只適用於jpg,jpeg和png ... –

+0

如果要管理它,請在IF條件中添加擴展名。 –

0

由於您使用MPMoviePlayerController,因此xcode將處理您的文件(它將創建視圖,播放電影並在完成後關閉視圖)。

如果要顯示圖像,只需使用關閉按鈕創建自定義視圖(因爲您需要關閉視圖)。在這個自定義視圖中,添加一個UIImageView並顯示你的圖像。

+0

你能提供任何教程或源代碼嗎? @dementiazz – teejay