我有一个视图,上面有几个按钮,用于显示UIImagePickerControllers(相机和媒体选择器)。在创建UIImagePickerControllers时,我给它们提供了不同的名称,并给出了模态,如下面的代码所示:

- (void) startMediaBrowserFromViewControllerForBGImage {
    UIImagePickerController * mediaUIForBGImage = [[UIImagePickerController alloc]init];
    //i also set a bunch of different settings here, but it doesn't matter for this purpose
    mediaUIForBGImage.delegate = self;
    [self presentModalViewController: mediaUIForBGImage animated:YES];
}

现在,您也可以在代码中看到,我将委托设置为self,这就是我对所有UIImagePickerControllers所做的工作,但是问题是-在委托方法中,我如何知道哪个UIImagePickerController称为委托方法。因为每个UIImagePickerControllers我需要对媒体执行的操作都不同。在委托方法中,我确实获得了UIImagePickerController参数,但它始终具有从方法(选择器)分配的名称。我可以用来知道要引用哪个UIImagePickerController?

最佳答案

我认为您可以存储对每个选择器的引用,然后检查它是否是同一实例。尽管我会质疑使用多个不同的选择器实例,但是您可以只配置一个实例吗?此外,它们在任何配置中都返回几乎相同的结果,您可以针对特定需求调查结果字典。

self.oneImagePicker = [UIImagePickerController ...]
self.twoImagePicker = [UIImagePickerController ...]

//In delegate
if ([self.oneImagePicker isEqual:picker]) ...

关于ios - 在UIImagePickerController委托(delegate)中标识不同的选择器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12328859/

10-15 11:21