简体   繁体   English

如何在Swift中使用三个按钮选择三个图像

[英]How to select Three images with three buttons in Swift

On my screen I need to add three images for that I have three separate buttons在我的屏幕上,我需要添加三个图像,因为我有三个单独的按钮

code: here EasyImagePicker is my custom imagepicker.. but with my below code if I select any one image from imagepicker then it's adding in all three images代码:这里EasyImagePicker是我的自定义imagepicker ..但我下面的代码,如果我选择imagepicker任何一个图像,然后它添加在所有三个图像

class EditProfileImagesVC: UIViewController {
    
    private var imagePicker : EasyImagePicker?
    private var imagePicker1 : EasyImagePicker?
    private var imagePicker2 : EasyImagePicker?
    
    
    @IBOutlet weak var profilePicImage: UIImageView!
    @IBOutlet weak var leftProfilePicImg: UIImageView!
    @IBOutlet weak var rightProfilePicImg: UIImageView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        imagePicker = EasyImagePicker(presentationController: self, delegate: self)
        imagePicker1 = EasyImagePicker(presentationController: self, delegate: self)
        imagePicker2 = EasyImagePicker(presentationController: self, delegate: self)
        
    }
    
    @IBAction func profilePicBtn(_ sender: UIButton) {
        imagePicker?.present(from: sender, mediaType: .images, onViewController: self)
    }
    
    @IBAction func leftProfileBtn(_ sender: UIButton) {
        imagePicker1?.present(from: sender, mediaType: .images, onViewController: self)
    }
    
    @IBAction func rightProfileBtn(_ sender: UIButton) {
        imagePicker2?.present(from: sender, mediaType: .images, onViewController: self)
    }
}

extension EditProfileImagesVC : EasyImagePickerDelegate{
    
    func didSelect(image: UIImage?, video: URL?, fileName: String?) {
        if let img = image{
            profilePicImage.image = img
        }
        if let img1 = image{
            leftProfilePicImg.image = img1
        }
        if let img2 = image{
            rightProfilePicImg.image = img2
        }
    }
}

how to select three different images for three images using imagepicker.. please do guide me如何使用imagepicker为三个图像选择三个不同的图像..请指导我

The reason is there is no thing here that can differentiate which button is clicked , hence result set to all imageviews原因是这里没有任何东西可以区分点击了哪个按钮,因此结果设置为所有图像视图

func didSelect(image: UIImage?, video: URL?, fileName: String?) {
    if let img = image{
        profilePicImage.image = img
    }
    if let img1 = image{
        leftProfilePicImg.image = img1
    }
    if let img2 = image{
        rightProfilePicImg.image = img2
    }
} 

You need你需要

enum ImageChooser {
  case profile,left,right
}
class EditProfileImagesVC: UIViewController { 
    private var imagePicker : EasyImagePicker?
    @IBOutlet weak var profilePicImage: UIImageView!
    @IBOutlet weak var leftProfilePicImg: UIImageView!
    @IBOutlet weak var rightProfilePicImg: UIImageView!
    var chooser:ImageChooser = .profile
    override func viewDidLoad() {
        super.viewDidLoad()

        imagePicker = EasyImagePicker(presentationController: self, delegate: self)

    }

    @IBAction func profilePicBtn(_ sender: UIButton) {
        chooser = .profile
        imagePicker?.present(from: sender, mediaType: .images, onViewController: self)
    }

    @IBAction func leftProfileBtn(_ sender: UIButton) {
        chooser = .left
        imagePicker1?.present(from: sender, mediaType: .images, onViewController: self)
    }

    @IBAction func rightProfileBtn(_ sender: UIButton) {
        chooser = .right
        imagePicker2?.present(from: sender, mediaType: .images, onViewController: self)
    }
}


extension EditProfileImagesVC : EasyImagePickerDelegate{

    func didSelect(image: UIImage?, video: URL?, fileName: String?) {
        if let img = image {
            if chooser == .profile {
                profilePicImage.image = img
            }
            else
                if chooser == .left {
                    leftProfilePicImg.image = img
                }
                else
                    if chooser == .right {
                        rightProfilePicImg.image = img
                    }
        }
                 
    }
}

Add picker reference to func didSelect(image: UIImage?, video: URL?, fileName: String?)将选择器引用添加到 func didSelect(image: UIImage?, video: URL?, fileName: String?)

This way func didSelect(picker: EaseImagePicker, image: UIImage?, video: URL?, fileName: String?)这样 func didSelect(picker: EaseImagePicker, image: UIImage?, video: URL?, fileName: String?)

From picker call it with the reference to self didSelect(picker: self, image: selectedImage, video: nil, fileName: nil)从选择器调用它并引用 self didSelect(picker: self, image: selectedImage, video: nil, fileName: nil)

func didSelect(picker: EaseImagePicker, image: UIImage?, video: URL?, fileName: String?) {
if let img = image{
    switch picker {
        case imagePicker:
            profilePicImage.image = img
        case imagePicker1:
            leftProfilePicImg.image = img
        case imagePicker2:
           rightProfilePicImg.image = img
        default:
            break
    }
}
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在所有设备中每行快速布局三个图像 - How to layout three images per row in all devices swift 如何在每个单元格的自定义tableCell中创建自定义按钮,我需要三个图像 - How to create custom buttons in custom tableCell in each cell i need three images 使用iOS Swift隐藏三个按钮中的一个按钮 - Hiding one button out of three buttons using iOS Swift 如何在 swift 中所有 iPhone 屏幕尺寸的 Collectionview 单元格中显示三个圆形图像 - How to show three rounded images in Collectionview cell in all iPhone screen sizes in swift 在 UIAlertView 中添加三个按钮 - Add three Buttons in an UIAlertView 推送通知上的三个按钮 - Three buttons on push notification 如何将一个 DatePicker 添加到 swift 中的三个文本字段 - How to add one DatePicker to three textfields in swift 如何更改UINavigationBar上所有三个按钮上的标签 - How do I change the Labels on all three buttons on a UINavigationBar 如何确定从三个按钮中按下了哪个按钮 - How to determine which button was pressed out of three buttons 如何使用自动布局水平设置三个按钮而无间隙 - How to set three buttons horizontally without gap using autolayout
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM