2014-03-29 102 views
3

我的主要目標是能夠點擊表格視圖項目,並加載視頻。播放視頻從UITableView的

void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder 
    NSString *dataPath = documentsDirectory; 
    filePathsArray = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:dataPath error:nil]; 

} 

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 

    return [filePathsArray count]; 

} 

- (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]; 
    } 

    cell.textLabel.text = [filePathsArray objectAtIndex:indexPath.row]; 
    return cell; 
} 

然而,第一部分:表視圖填充了文件目錄的內容,我已經能夠成功地做到這一點,並添加文件名到電池的標籤,我用下面的代碼這樣做我覺得困難是打開文件的一部分。這是到目前爲止我的代碼:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSLog(@"didSelectRowAtIndexPath"); 
    myURL=[NSURL URLWithString:[filePathsArray objectAtIndex:indexPath.row]]; 
    MPMoviePlayerController *moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:myURL]; 
    [self.view addSubview:moviePlayerController.view]; 
    moviePlayerController.fullscreen = YES; 
    [moviePlayerController play]; 
    [self setController:moviePlayerController]; 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 

當一個UITableView小區的用戶點擊的是,視頻播放器打開全屏,它只是說會發生什麼「載入中...」的全部時間和視頻不加載時,調試器中不會報告任何錯誤。變量myURL應該等於什麼?任何幫助將不勝感激。

回答

3

終於想通了一段時間後,當時有兩輛問題那也只是取的名字不完整的文件目錄,例如var/mobile ...並且視頻播放器也出現問題,這是任何人想要和我一樣的工作代碼:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
NSLog(@"didSelectRowAtIndexPath"); 

NSString *currentFileName = [filePathsArray[indexPath.row] lastPathComponent]; 
NSString *documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *filePath = [documentsDirectoryPath stringByAppendingPathComponent:currentFileName]; 

//Play the movie now 
NSURL *videoURL =[NSURL fileURLWithPath:filePath]; 
MPMoviePlayerViewController *videoPlayerView = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL]; 
videoPlayerView.moviePlayer.fullscreen=TRUE; 

[self presentMoviePlayerViewControllerAnimated:videoPlayerView]; 
[videoPlayerView.moviePlayer play]; 
[tableView deselectRowAtIndexPath:indexPath animated:YES]; 

} 
+1

moviePlayer是.h文件中的一個屬性,它是:@property(nonatomic,只讀)MPMoviePlayerController * moviePlayer; – jjdoherty

0

NSURL與路徑不同,因爲其中包含用於訪問資源的協議。 例如,在http://stackoverflow.com

我想這個問題的http://是,你正在創建從一個路徑字符串的URL,試試這個:

NSString *urlStr = [NSString stringWithFormat:@"file://%@", [filePathsArray objectAtIndex:indexPath.row]]; 
myURL = [NSURL URLWithString:urlStr]; 
+0

不幸的是,它沒有工作,但無論如何,感謝您的幫助!如果你拿出任何其他想法,請告訴我,我已經要瘋了這個問題。 – jjdoherty