我试图使用故事板在新的iOS7 Xcode项目中设置imagePicker
,但在我找到以下代码之前似乎无法在线找到任何示例。
我已经设置了它,以便在按下按钮时,它使用模态推送来导航到具有显然调用图像选择器代码的"UIImagePickerController"
类的视图。
但是,当应用程序运行时,单击允许应用程序访问您的照片后,它不会加载任何内容,请问是否有任何帮助的机会?
错误屏幕截图抓取:https://pbs.twimg.com/media/Bdy7v9JCAAABpvS.jpg:large
界面设置:
@interface ridecount_AddRide_ViewController : UIViewController<UIImagePickerControllerDelegate, UINavigationControllerDelegate>{
法典:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
UIImagePickerController *controller = [segue destinationViewController];
controller.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
controller.delegate = self;
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
[self dismissViewControllerAnimated:YES completion:nil];
}
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
[self dismissViewControllerAnimated:YES completion:nil];
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
[[self.view viewWithTag:100023] removeFromSuperview];
UIImageView * imageView = [[UIImageView alloc] initWithFrame:CGRectMake(320/2-200/2, 10, 100, 100)];
imageView.tag = 100023;
imageView.contentMode = UIViewContentModeScaleAspectFit;
imageView.image = image;
[self.view addSubview:imageView];
}
控制器UIImagePickerController *controller = [[segue destinationViewController] init];
<</em>
SWIFT - 有点不同的方法
//Init property
var imagePicker = UIImagePickerController()
然后分配
override func prepareForSegue(segue:UIStoryboardSegue!, sender: AnyObject!)
{
imagePicker = segue.destinationViewController as UIImagePickerController
imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
imagePicker.allowsEditing = false
imagePicker.delegate = self
}
我遇到了同样的问题。仅当availableMediaTypesForSourceType
设置为 UIImagePickerControllerSourceTypeCamera
时,从情节提要初始化的 UIImagePickerController
对象才能正常工作。
如果要保留prepareForSegue:
功能,可以从情节提要中删除UIImagePickerController
,并使用以下代码以编程方式创建它:
- (void)showCameraRollController
{
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
UIStoryboardSegue *segue = [UIStoryboardSegue segueWithIdentifier:@"CameraRollController" source:self destination:imagePickerController performHandler:^{
[self presentViewController:imagePickerController animated:YES completion:NULL];
}];
[self prepareForSegue:segue sender:self];
[segue perform];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"CameraRollController"]) {
UIImagePickerController *imagePickerController = [segue destinationViewController];
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imagePickerController.delegate = self;
}
}
可能,另一种选择是子类UIImagePickerController并添加到子类中:
- (instancetype)initWithCoder:(NSCoder *)aDecoder
{
return [super init];
}
它似乎奏效了。