从主视图控制器单击按钮将录制的视频保存在容器视图中?

时间:2015-05-22 08:27:41

标签: ios objective-c xcode6 uiimagepickercontroller

我的应用会录制视频,播放并保存视频。我在主视图控制器中使用容器视图。与主视图控制器中的UISegmentedControl一样,我的(SaveVideo)按钮不在容器视图中。因此,我无法保存录制的视频。

我在ViewController.m中的代码如下:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

   mediaType = [info objectForKey:UIImagePickerControllerMediaType];
   if ([mediaType isEqualToString:@"public.movie"]){
    // Saving the video / // Get the new unique filename
    sourcePath = [[info  objectForKey:@"UIImagePickerControllerMediaURL"]relativePath];
}
  [self.videoController play];
}   


- (IBAction)saveVideo:(id)sender
{
  UISaveVideoAtPathToSavedPhotosAlbum(sourcePath,nil,nil,nil);   
}

我在控制台中遇到以下错误:

'[NSURL initFileURLWithPath:]: nil string parameter'

我可以做些什么,以便主视图控制器中的按钮识别容器视图中录制视频的sourcePath

1 个答案:

答案 0 :(得分:2)

在主视图控制器中保留对容器视图控制器的引用。

@interface mainViewController ()
@property (nonatomic, strong) containerViewController;
@end

然后在您的containerViewController中,在头文件中保留一个引用源路径的属性。

//containerViewController.h
@interface containerViewController : UIViewController
@property (nonatomic, strong) NSString *sourcePath;
@end

然后,当选择保存视频按钮时,您可以引用您的containerViewController源路径属性。

- (IBAction)saveVideo:(id)sender
{
  UISaveVideoAtPathToSavedPhotosAlbum(self.containerViewController.sourcePath,nil,nil,nil);   
}