gpt4 book ai didi

ios - 为什么 UIImagePickerControllerDelegate 方法没有触发?

转载 作者:行者123 更新时间:2023-12-01 18:47:54 25 4
gpt4 key购买 nike

我最近重构了我的应用程序以实现 命令 图案。为此,我试图将我的所有功能都集成到适当的命令类中。我已经成功地为我的所有命令实现了该模式,但有一个异常(exception)。我有一个名为 HarvestPhotoCommand 的命令启动 UIImagePickerController ,并且我想将该命令类用作选择器的委托(delegate)。看起来很简单,但由于某种原因,委托(delegate)方法没有被调用。

这是我的代码:

//Header file
@interface WSHarvestPhotoCommand : WSCommand
<
UINavigationControllerDelegate,
UIImagePickerControllerDelegate,
MWPhotoBrowserDelegate
>
@end

//From the super class header file:
@property (nonatomic, weak) WSMapViewEngine *mapViewEngine;

//Implementation file
-(void)execute
{
_imagePicker = [[UIImagePickerController alloc] init];
_imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
_imagePicker.delegate = self;
_imagePicker.navigationBar.barStyle = [WSAppSettings sharedSettings].theme.barStyle;
[self.mapViewEngine.mapVC presentViewController:_imagePicker animated:YES completion:nil];
}

#pragma mark - UIImagePickerControllerDelegate
#pragma mark -
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSLog(@"Please hit me!");
}

-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
NSLog(@"Or me!");
}
WSCommandNSObject ,就像 self.mapViewEngine . self.mapViewEngine.mapVCUIViewController .

到目前为止,我已经尝试了两个实验。首先,我在 mapViewEngine 上设置委托(delegate)协议(protocol)。并将其指定为委托(delegate);其次,我对 mapVC 做了同样的事情.这两个实验都有效,这意味着在每个类中都调用了委托(delegate)方法。这证明了我的 UIImagePicker执行是正确的。

那么为什么这对我的命令类不起作用呢?它和 mapViewEngine是 NSObject 所以我知道这不是问题。我想我可以制作 mapViewEnginemapVC委托(delegate),但我这样做的全部原因是为了解耦我的类(class)。我整晚都在努力解决这个问题,所以我现在会接受任何想法或建议。

最佳答案

如果您使用 ARC,delegateUIImagePickerController应该是 weak .这意味着在 UIImagePickerControllerDelegate 的对象之后模具 delegate UIImagePickerController 的值变成 nil自动地。
您的 WSHarvestPhotoCommand在您对 UIImagePickerController 进行任何点击之前,对象就在内存中消失了.

关于ios - 为什么 UIImagePickerControllerDelegate 方法没有触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33447753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com