如何分离这些图像选择器功能?
问题描述:
我想上传第三张,也许更多的图像到图像视图上,但我不知道如何分离第三张图像。前两个工作正常,我如何添加第三个功能,我主要需要在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组这样
在您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)
}
答
你有很多重复的代码。创建一个用于选择图片的功能。只需选择每个按钮就可以保存设置好的图像视图。
下面是更新后的代码:
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
。否则根据需要调整。
获取错误。 selected = tappedImage.tag – Riccardo
@Riccardo你得到了什么错误? –
使用未解析的标识符“selected” – Riccardo