我的应用会录制视频,播放并保存视频。我在主视图控制器中使用容器视图。与主视图控制器中的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 ?
答案 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);
}