如何分离这些图像选择器功能?

问题描述:

我想上传第三张,也许更多的图像到图像视图上,但我不知道如何分离第三张图像。前两个工作正常,我如何添加第三个功能,我主要需要在func图像选择器控制器上的帮助,我认为。如何分离这些图像选择器功能?

var selected = 1 


@IBAction func pickImage1(_ sender: Any) { 


    let image = UIImagePickerController() 
    image.delegate = self 
    image.sourceType = UIImagePickerControllerSourceType.photoLibrary 
    image.allowsEditing = false 
    selected = 1 

    self.present(image, animated: true) 
} 


func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
    if let image = info[UIImagePickerControllerOriginalImage] as? UIImage { 
     if selected == 1 { 
      myImageView1.image = image 
     } else { 
      myImageView2.image = image 
      return 
     } 
     //i tried putting myImageView3 here but it just replaced the 2nd 

    } 
    else { 
     //error 
    } 
    self.dismiss(animated: true, completion: nil) 
} 


@IBAction func pickImage2(_ sender: Any) { 

     let image2 = UIImagePickerController() 
    image2.delegate = self 
    image2.sourceType = UIImagePickerControllerSourceType.photoLibrary 
    image2.allowsEditing = false 
    selected = 2 

    self.present(image2, animated: true) 
} 


@IBAction func pickImage3(_ sender: Any) { 
    let image3 = UIImagePickerController() 
    image3.delegate = self 
    image3.sourceType = UIImagePickerControllerSourceType.photoLibrary 
    image3.allowsEditing = false 
    selected = 3 

    self.present(image3, animated: true) 
} 

首先,为每个图像视图添加一个唯一标记。避免使用0,因为默认的标签是0。所以,你将有图像视图与标签说,1至3组这样

enter image description here

在您viewDidLoad每个图像视图中添加自来水监听到所有图片观点。然后,在图像自来水处理程序,图像视图通过记录它的标签号码窃听记录呼吁所有三个图像视图之一这种方法通过一个

let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(imageTapped(tapGestureRecognizer:))) 
imageView.isUserInteractionEnabled = true 
imageView.tag = 1 
imageView.addGestureRecognizer(tapGestureRecognizer) 

。由于标签号是唯一的,我们可以用它来找出哪些图像视图最后,在摄像委托后

func imageTapped(tapGestureRecognizer: UITapGestureRecognizer) 
{ 
    let image = UIImagePickerController() 
    image.delegate = self 
    image.sourceType = UIImagePickerControllerSourceType.photoLibrary 
    image.allowsEditing = false 
    let tappedImage = tapGestureRecognizer.view as! UIImageView 
    selected = tappedImage.tag 
    self.present(image, animated: true) 
} 

挖掘,找到你的图像视图从它的父视图。假设你要添加图像意见self.view,简单地得到这样的看法,并设置图像

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
    if let image = info[UIImagePickerControllerOriginalImage] as? UIImage { 
     if let imageView = self.view.viewWithTag(selected) as? UIImageView { 
      imageView.image = image 
     } 
    } 
    else { 
     //error 
    } 
    self.dismiss(animated: true, completion: nil) 
} 
+0

获取错误。 selected = tappedImage.tag – Riccardo

+0

@Riccardo你得到了什么错误? –

+0

使用未解析的标识符“selected” – Riccardo

你有很多重复的代码。创建一个用于选择图片的功能。只需选择每个按钮就可以保存设置好的图像视图。

下面是更新后的代码:

var selectedImageView: UIImageView? = nil 

@IBAction func pickImage1(_ sender: Any) { 
    selectedImageView = myImageView1 

    selectPicture() 
} 

@IBAction func pickImage2(_ sender: Any) { 
    selectedImageView = myImageView2 

    selectPicture() 
} 

@IBAction func pickImage3(_ sender: Any) { 
    selectedImageView = myImageView3 

    selectPicture() 
} 

func selectImage() { 
    let picker = UIImagePickerController() 
    picker.delegate = self 
    picker.sourceType = .photoLibrary 
    picker.allowsEditing = false 

    present(image, animated: true) 
} 

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
    if let image = info[UIImagePickerControllerOriginalImage] as? UIImage { 
     if let imageView = selectedImageView { 
      imageView.image = image 
     } 
    } 

    selectedImageView = nil 

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

您还可以,如果你给每个按钮一个独特的标签使用一个按钮动作。比方说,你给的3个按键的标记1,2和3的一个更换3种pickImageX方法:

@IBAction func pickImage(_ sender: UIButton) { 
    switch sender.tag { 
    case 1: 
     selectedImageView = myImageView1 
    case 2: 
     selectedImageView = myImageView2 
    case 3: 
     selectedImageView = myImageView3 
    default: 
     break 
    } 

    if selectedImageView != nil { 
     selectPicture() 
    } 
} 

这里假设你正在使用这个UIButton。否则根据需要调整。