不叫(委托设置为self)的UIImagePickerController委托方法
我有一个问题,即:不叫(委托设置为self)的UIImagePickerController委托方法
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {}
只能被称为用相机,而不是当我试图通过用户的浏览照片,选择一个图像。
这里是为UIImagePicker代表我的初始化代码:
-(void)viewDidLoad{
[self initImagePicker];
}
-(void)initImagePicker{
DLog(@"");
self.imagePickerController.delegate = self;
}
- (void)setupImagePicker:(UIImagePickerControllerSourceType)sourceType
{
self.imagePickerController.sourceType = sourceType;
if (sourceType == UIImagePickerControllerSourceTypeCamera)
{
// user wants to use the camera interface
//
self.imagePickerController.showsCameraControls = NO;
if ([[self.imagePickerController.cameraOverlayView subviews] count] == 0)
{
// setup our custom overlay view for the camera
//
// ensure that our custom view's frame fits within the parent frame
CGRect overlayViewFrame = self.imagePickerController.cameraOverlayView.frame;
CGRect newFrame = CGRectMake(0.0,CGRectGetHeight(overlayViewFrame)-15.0,CGRectGetWidth(overlayViewFrame),15.0);
self.view.frame = newFrame;
[self.imagePickerController.cameraOverlayView addSubview:self.view];
[self.view bringSubviewToFront:self.view];
}
}
}
然后在我的根类,一来就是授人以类UIImagePicker是委托给UIImagePicker:
#pragma mark -
#pragma mark Toolbar Actions
- (void)showImagePicker:(UIImagePickerControllerSourceType)sourceType
{
if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
// camera is not on this device, don't show the camera button
NSMutableArray *toolbarItems = [NSMutableArray arrayWithCapacity:self.myToolbar.items.count];
[toolbarItems addObjectsFromArray:self.myToolbar.items];
[toolbarItems removeObjectAtIndex:2];
[self.myToolbar setItems:toolbarItems animated:NO];
}
if ([UIImagePickerController isSourceTypeAvailable:sourceType])
{
self.overlayViewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"OverlayViewController"];
self.overlayViewController.delegate = self;
self.overlayViewController.imagePickerController = [[UIImagePickerController alloc] init];
[self.overlayViewController setupImagePicker:sourceType];
[self presentModalViewController:self.overlayViewController.imagePickerController animated:YES];
}
}
我知道这是一个SO问题的很多代码,但对于实现这个类的经验丰富的人来说,我做错了什么?
对我来说,这条线是奇怪的:
self.overlayViewController.imagePickerController = [[UIImagePickerController alloc] init];
我从来没有分配和初始化前的所有者以外的财产。这是问题吗?
找到修复:
需要补充:
self.overlayViewController.imagePickerController.delegate = self.overlayViewController;
后:
self.overlayViewController.imagePickerController = [[UIImagePickerController alloc] init];
*你做了同样的事情@tobiasbayer建议你以前做,但你没有标记他的答案是正确的!伟大的方式来赚取积分! – 2017-01-19 05:11:10
我认为你设置的代表太早(initImagePicker
在viewDidLoad
)。 self.imagePickerController
可能没有。 您应该在创建UIImagePickerController
之后设置委托。
!!大声笑你可能打败了我。我刚刚发布了我的答案,请接受修改并接受您的回答。 – stackOverFlew 2013-02-17 12:05:01
集UIImagePickerDelegate和UINavigationControllerDelegate中的.h文件中与@interface。
像
@interface class : UIView <UIImagePickerDelegate , UINavigationControllerDelegate>
用的UIImagePickerController对象设置自委托过,
imgPickerController.delegate = self;
希望它可以帮助你。
从哪里调用'setupImagePicker'和'showImagePicker' – 2013-02-17 12:05:23
在调用showImagePicker时出现的UIImagePicker委托视图控制器中调用setUpImagePicker。 – stackOverFlew 2013-02-17 12:07:14