uiimagepicker区分调用的位置

时间:2014-04-09 15:34:35

标签: ios objective-c uiimagepickercontroller grand-central-dispatch

我想这是一个两部分问题。第一部分是:我有一个视图控制器,其中有两个图像视图,两个用户都可以互动。在我打电话:

if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc]init];
    imagePicker.delegate = self;
    imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    [self presentViewController:imagePicker animated:YES completion:nil];
}

委托方法处理从照片库中挑选的图像。但是现在我必须选择哪个图像视图获取该图片,除非我使用两个按钮制作自定义UIView,用户选择图像视图。这是更多的点击,而不是非常实用。我尝试制作另一个NSObject文件,但它不能使用[self presentViewController ...]。在新的View Controller中调用该方法无法呈现UIImagePickerController,因为它不在窗口层次结构中。有没有办法区分图像视图调用选择器的didFinishPickingMediaWithInfo内部?

也许这个问题的第二部分并不属于这里,但它仍然与图片有关。如果用户选择一张图片并将其添加到图库中,则选择另一张图片,然后选择另一张图片......让我们说10张图片...这样做的最佳方法是什么,我的意思是GCD还是NSOperationQueue?我问的原因是,如果用户使用慢速移动互联网连接并将其加载到GCD或NSOpQueue后,他们会离开视图控制器...这些图像会继续加载到服务器吗?我知道你可以用NSOpQueue订购,我猜你可以在viewWillDisappear时取消操作......是这样做的吗?

我知道这是写作的日志而不是很多代码但是试图学习最好的方法来解决所有这些问题。谢谢!

1 个答案:

答案 0 :(得分:0)

以下是我在类似情况下所做的经验,我希望这会有所帮助。

首先,关于问题的初始部分,您无法读取方法didFinishPickingMediaWithInfo的参数来确定UIImageView是按下的那个。但是,您可以轻松地在视图控制器中保留对lastPressedImageView的引用,并在收到didFinishPickingMediaWithInfo后将其保持为读取此变量的简单。

关于问题的第二部分,我建议您阅读/研究AFNetworking这是一个非常强大且易于学习的iOS网络库。您需要添加自己的逻辑来创建请求并发送它们,以及控制可能的错误,但是这个lib将帮助您专注于逻辑而不是低级网络问题。