【问题标题】:uiimagepicker differentiate where the call was madeuiimagepicker 区分调用的位置
【发布时间】:2014-04-09 15:34:34
【问题描述】:

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

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

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

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

我知道这是一个写作日志,而不是很多代码,而是试图学习实现这一切的最佳方法。谢谢!

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的建议。好久没学了所以没遇到过lastPressedImageView。你能举例说明这如何与两个 ImageView 一起工作吗?
    • 你的私有 viewController 接口上会有以下属性:@property(nonatomic,strong) UIImageView * lastPressedImageView; …稍后在您呈现视图控制器的方法中,您需要将此属性分配给被按下的视图并触发该方法到 presentViewController。
    • 这实际上引发了关于第一部分的想法......我可以在视图控制器中声明一个字符串,当单击一个图像时,我可以将字符串设置为图像 1。当委托方法被调用,我可以检查单击了哪个图像并将其设置在那里。看起来很简单!
    • 当然,使用字符串也是一个相关的简单想法。祝您实施顺利!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2011-09-29
    • 1970-01-01
    • 2013-12-24
    • 2014-05-26
    • 2018-09-21
    相关资源
    最近更新 更多