Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 一个用于多个图像视图的UIImagePickerController_Ios_Swift_Swift4_Uiimagepickercontroller - Fatal编程技术网

Ios 一个用于多个图像视图的UIImagePickerController

Ios 一个用于多个图像视图的UIImagePickerController,ios,swift,swift4,uiimagepickercontroller,Ios,Swift,Swift4,Uiimagepickercontroller,你能帮我用一下UIImagePickerController吗 我在一个ViewController中有12个ImageView。我需要帮助,以便每个ImageView可以从库中选择不同的照片。有人告诉我使用标签,但我无法让它工作,因为我是Swift新手。这与Swift无关。您可以在界面生成器(或代码)中设置“标记”编号。UIResponder子体上有一个.tag属性。 之后,在回调方法中进行如下切换 更清楚地说: let picker: UIImagePicker! = { // s

你能帮我用一下UIImagePickerController吗


我在一个ViewController中有12个ImageView。我需要帮助,以便每个ImageView可以从库中选择不同的照片。有人告诉我使用标签,但我无法让它工作,因为我是Swift新手。

这与Swift无关。您可以在界面生成器(或代码)中设置“标记”编号。UIResponder子体上有一个.tag属性。 之后,在回调方法中进行如下切换

更清楚地说:

let picker: UIImagePicker! = { 
    // setup your image picker here, don't forget to set the proper delegate
}()

var lastSender: AnyObject?
func onTouch(_ sender: AnyObject?) {
    // add checks for the sender here
    lastSender = sender
    present(picker, animated: true, completion: *Your Completion*)
}
代表:

func imagePickerController(\uPicker:UIImagePickerController,
didFinishPickingMediaWithInfo:[UIImagePickerController.InfoKey:Any])

let image=*从信息中获取图像*

lastSender?.image=image
为故事板上的每个UIImageView启用用户交互

tappesturerecognizer
添加到每个
UIImageView
。将每个
TapGestureRecograiser
iAction
连接

@IBAction func tap(_ sender: UITapGestureRecognizer) {

    currentImageView = sender.view as! UIImageView

    let picker = UIImagePickerController()
    picker.delegate = self
    self.present(picker, animated: true, completion: nil)

}
定义变量以存储当前
UIImageView

private var currentImageView: UIImageView? = nil
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {

    let image = info[UIImagePickerController.InfoKey.originalImage]
    currentImageView?.image = image as! UIImage

    self.dismiss(animated: true, completion: nil)
}
处理图像选择并将图像分配给
currentImageView

private var currentImageView: UIImageView? = nil
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {

    let image = info[UIImagePickerController.InfoKey.originalImage]
    currentImageView?.image = image as! UIImage

    self.dismiss(animated: true, completion: nil)
}

我正在以编程方式创建所有内容。所以我不明白在给ImageView分配标签后如何设置ImagePickerController。如果让PickeImage=info[UIImagePickerController原始图像]作为?UIImage。我应该在这里写下我应该选择哪个标记的imageView吗?您需要将调用者存储在某个地方,比如:
var lastssender:AnyObject?
,然后对其进行管理。ImagePickerController(据我所知)是另一个UIViewController,它不允许用户在拾取图像时调用另一个UIIImageView。因此,可以有点安全地假设所选的图像是为发送者拍摄的。这是我想到的最快的选择。在图像选择器回调中,您只需将拾取的图像设置为
lastSender.image
。不过,别忘了为发件人类型添加检查。从IB中很容易将不同的内容链接到您的操作。当您显示UIImage时,需要标记来获取发送者的线索,并分离逻辑。如果你不需要分开一些东西,你可以简单地记住你回调中的发送者,并在你的用户没有收到原始帖子时将图像设置为它,以反映我所说的内容以及你当前正在做的事情。解释您遇到的问题。有关可能的解决方案,请参阅。@rmaddy我目前正在执行此操作,用户将填写有关房屋的信息,并拍摄房屋的门、窗、屋顶、楼梯的照片,然后将所有信息推送到后端。因此,我正在努力为所有的ImageView拍照,因为它们不会将相同的图像反射到所有ImageView